在Google Nexus 7 ( Version 4.4.2 )平板出现之前,Intent.ACTION_GET_CONTENT打开相册会返回如下形式的Uri :

content://media/external/images/media/3951

使用ContentResolver查询MediaStore.Images.Media.DATA就可以找文件的URL, 然而在Google Nexus 7 上用同样的方法,却是返回如下Uri :

content://com.android.providers.media.documents/document/image:3951

这时使用ContentResolver就会报一些异常出来,提示说是没有权限(如takePersistableUriPermission等),网上也有一些建议方案,给这个Uri加上相应的权限,不过

效果都不太理想。

在不断搜索,实践的过程,发现在了有一个比较方便高效的解决问题的方法,分享出来,希望遇到同样问题的码友们能快速解决问题,轻松一下,

方案如下:

  Intent intent = new Intent();intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");//根据版本号不同使用不同的Actionif (Build.VERSION.SDK_INT <19) {intent.setAction(Intent.ACTION_GET_CONTENT);}else {intent.setAction(Intent.ACTION_OPEN_DOCUMENT);}startActivityForResult(intent, REQUEST_CODE);

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode==REQUEST_CODE) {if (null!=data) {Uri uri = data.getData();//根据需要,也可以加上Option这个参数InputStream inputStream = getContentResolver().openInputStream(uri);Bitmap bitmap = BitmapFactory.decodeStream(inputStream);    }    } }
  
     以上方法经不同Android机型测试,均能正常运行,分享出来,希望对码友们有用! 

更多相关文章

  1. 高级Redis应用进阶课 一站式Redis解决方案
  2. android——OpenGL(2)——gl10方法解析
  3. Android(安卓)Studio Gradle构建报错,Error:Execution failed for
  4. Android(安卓)Camera FW到Camera Hal调用流程
  5. android之VideoView和视频播放View的扩展
  6. Android动画TweenAnimation的使用方法
  7. android 5.1 USB调试开关
  8. 【Android】小白进阶之接口和抽象类的使用
  9. Android与单片机通信常用数据转换方法总结

随机推荐

  1. Android(安卓)学习笔记8——传感器使用
  2. 问题小结(11)-dialog的半透明背景的灰度
  3. ArcGIS Runtime for Android开发教程V2.0
  4. 网络对讲机C#服务器 Android客户端(三) and
  5. Android原生项目集成React Native踩坑记
  6. 转 20个Android很有用的代码片段
  7. Android(安卓)绘制统计图
  8. Intent的匹配与查找
  9. 关于android应用程序使用ActivityManager
  10. android OKHttp的基本使用详解