Android 调用系统图库
上面一篇讲到 Android 调用系统相机时遇到的兼容性问题,没想到选择系统图库的时候竟然也遇到了系统兼容性问题,郁闷之极无以言表,在这里记录下解决方案吧。
首先是调用系统默认图库代码:
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, SELECT_PHOTOS_REQUEST_CODE);
下面是关键的拿到图片的处理代码:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case SELECT_PHOTOS_REQUEST_CODE:
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
// 取得返回的 Uri,基本上选择照片的时候返回的是以 Uri 形式,但是在拍照中有得机子呢 Uri 是空的,所以要特别注意
if (uri != null) {
Bitmap image;
try {
// 这个方法是根据 Uri 获取 Bitmap 图片的静态方法
image = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
postImage.setImageBitmap(image);
imageLayout.setVisibility(View.VISIBLE);
mUri = uri;
} catch (Exception e) {
e.printStackTrace();
}
} else {
Bundle extras = data.getExtras();
if (extras != null) {
// 这里是有些拍照后的图片是直接存放到 Bundle 中的所以我们可以从这里面获取 Bitmap 图片
Bitmap image = extras.getParcelable("data");
if (image != null) {
postImage.setImageBitmap(image);
imageLayout.setVisibility(View.VISIBLE);
mUri = BitmapUtil.getImageUri(ctx, image);
}
}
}
}
break;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Android 调用系统相机拍照
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论