我很難理解ACTION_OPEN_DOCUMENT
和ACTION_GET_CONTENT
意圖之間的區別,它們用於打開可打開的文檔。如果我在KitKat之前支持Andriod,不支持ACTION_OPEN_DOCUMENT
,我應該只與ACTION_GET_CONTENT
解決?ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT之間的真正區別是什麼?
的documentation這樣說:
ACTION_OPEN_DOCUMENT
並不打算成爲ACTION_GET_CONTENT
的替代品。你應該使用哪一個要看 您的應用程序的需求:
- 使用
ACTION_GET_CONTENT
如果你希望你的應用程序只需讀取/進口 數據。通過這種方法,應用程序會導入一份數據副本,如 圖像文件。- 如果您希望自己的應用擁有 長期持續訪問文檔 供應商擁有的文檔,請使用
ACTION_OPEN_DOCUMENT
。一個例子是一個照片編輯應用程序,它允許用戶編輯存儲在文檔提供程序中的圖像。
不ACTION_GET_CONTENT
也使用文檔提供商奇巧?什麼會阻止我進行「長期,持續的訪問」,這到底意味着什麼?
基本上,以下兩個片段有什麼區別?
ACTION_GET_CONTENT
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
ACTION_OPEN_DOCUMENT
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
以我的經驗,從來沒有一個選擇器對話框。這兩個操作導致相同的全屏UI。它就像一個文件瀏覽器,但你也可以選擇滑出一個左側抽屜,裏面裝滿了應用程序圖標。使用每個操作時唯一的區別是左側的應用程序列表。當我傳遞圖像MIME類型時,GET_CONTENT允許我不僅瀏覽我的文件夾(如下載),還在Google相冊,Dropbox等的幻燈片左側抽屜中具有條目。如果我使用OPEN_DOCUMENT,則會得到完全相同的UI,左側抽屜中沒有任何應用程序願意爲Google雲端硬盤以外的內容提供服務。 – Stephen
@Stephen:「從來沒有選擇器對話框」 - 「ACTION_GET_CONTENT」將在Android 4.3及更高版本上有一個。 「使用每個動作的唯一區別是左側的應用程序列表」 - 某些應用程序支持其中一項操作,一些支持另一項。理想情況下,像Dropbox這樣的應用程序可以在Android 4.4+上支持ACTION_OPEN_DOCUMENT,並且可以在Android 4.3及更低版本上支持「ACTION_GET_CONTENT」。 – CommonsWare
我剛剛在4.3設備上安裝了我的應用程序,你是對的!一個「選擇器」顯示出來而不是「文件瀏覽器」類型的界面。謝謝您的幫助!順便說一句,愛你的書。我已經訂閱了多年。 – Stephen