上面一篇讲到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;
}
}

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. Ubuntu下批处理转换jpg 2 png格式
  3. Android(安卓)Binder机制(一)
  4. Android(安卓)请求Root权限代码
  5. Gallery练习(android)
  6. Android各版本系统源代码下载
  7. android 桌面小部件(App Widgets)如何显示自定义的view
  8. Android(安卓)-- 系统信息(内存、cpu、sd卡、电量、版本)获取
  9. Android(安卓)Audio - 支持多应用同时录音_Android8.1修改方法

随机推荐

  1. Android 购物车加减功能的实现代码
  2. Android 8 声音调整过程
  3. 第十一节(Android常见控件二)
  4. android 随手记 --byte String inputstre
  5. Android权限控制EasyPermissions
  6. Android Service绑定的时候没有回调onBou
  7. RK3399 /RK3288 ADB使用
  8. android - 奔溃日志收集,UncaughtExceptio
  9. android Toast 自定义显示位置 custom po
  10. 转:[Android]倒影效果的ImagView