android 系統相簿呼叫,各方式返回的URI總結
請求系統相簿有三個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。