您的位置:首页 > 移动开发 > Android开发

android 系统相册调用,各方式返回的URI总结

2017-05-13 11:51 916 查看
请求系统相册有三个Action:

下面会详细介绍他们在不同版本系统中的测试结果区别: 

测试系统:左图->Android 7.0官方模拟器 ;   右图-> Android 5.1的flyme 6 魅蓝note3
ACTION_OPEN_DOCUMENT 从自带文件管理器获取 >> content://com.android.providers.media.documents/document/image:1385

打开的是系统的文件管理器的图片选择器(设置了类型“image/*”),没有图库选项,也没有第三方文件管理器的选项,

红框中选项返回的URI又不同

Downloads >> content://com.android.providers.media.documents/document/image:52

SDCARD >> content://com.android.externalstorage.documents/document/primary:LOST.DIR/05115.jpg





ACTION_GET_CONTENT 从自带文件管理器获取 >> content://com.android.providers.media.documents/document/image:1365  

ACTION_GET_CONTENT 从图库或第三方文件管理器[b]获取 >> [/b]content://media/external/images/media/1254

打开的是文件管理器的图片选择器,可以选择图片(包括最近Recent),也可以选择图库,也可以切换到第三方文件管理器中去选择

红框中选项返回的URI又不同

Downloads >> content://com.android.providers.media.documents/document/image:52

SDCARD >> content://com.android.externalstorage.documents/document/primary:LOST.DIR/05115.jpg





 ACTION_PICK默认打开图库,从图库获取 >> content://media/external/images/media/157

在真机中,默认打开的不一定是系统自带的图库,可能有第三方的图片管理软件,在选择列表中有第三方软件供选择打开,但返回的content格式是一样的

 
 综上: uri只跟从图库还是文件管理器中选择有关,action决定可选择的方式(图库和文件管理器)

从图库选择的好处是可以预览图片,从文件管理器中不能放大预览
 
 
测试系统:android 6.0   华为
ACTION_OPEN_DOCUMENT  自带文件管理器 >> content://com.android.providers.media.documents/document/image:147
ACTION_GET_CONTENT 从自带文件管理器中选择 >> content://com.android.providers.media.documents/document/image:185
ACTION_GET_CONTENT 从图库或第三方文件管理器中选择 >> content://media/external/images/media/35144
ACTION_PICK  自带图库或第三方图库 >>  content://media/external/images/media/35144
 
 测试系统:android 4.2.1  华为
 ACTION_GET_CONTENT  弹出图库和文件管理器,供选择
 ACTION_OPEN_DOCUMENT   直接崩,不能使用,因为4.4及以上才有
 ACTION_PICK  打开图库
 
 
综上得出 :
结论一:
ACTION_OPEN_DOCUMENT    仅限4.4及以上使用,打开文件管理器
ACTION_GET_CONTENT         4.4以下默认图库,4.4级以上默认打开文件管理器,但是可以在两种方式中自由切换,包括第三方文件管理器
ACTION_PICK                           没有系统限制,打开图库

结论二:
从自带文件管理器获取到的uri 格式为:content://com.android.providers.media.documents/document/image:5468
从图库或第三方软件获取到的uri格式为:content://media/external/images/media/5648

 结论三:
 content://media/external/images/media/657  这种格式,转换成路径后可以直接用
 content://com.android.providers.media.documents/document/image:5487 这种格式,转换成路径后不能直接用,需要提取id。
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐