请求系统相册有三个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 从图库或第三方文件管理器获取 >> 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。