2016-03-23 22 views
11

オープン可能な文書を開くために使用される場合、ACTION_OPEN_DOCUMENTACTION_GET_CONTENTのインテントの違いを理解するのは苦労しています。 ACTION_OPEN_DOCUMENTをサポートしていないKitKatの前にAndriodをサポートしている場合は、ACTION_GET_CONTENTで解決する必要がありますか?ACTION_GET_CONTENTとACTION_OPEN_DOCUMENTの実際の違いは何ですか?

documentationはこれを言う:

ACTION_OPEN_DOCUMENTACTION_GET_CONTENTの代替となるものではありません。あなたが使用する必要があります一つは あなたのアプリケーションのニーズに応じて異なります。

  • 使用ACTION_GET_CONTENTアプリは、単に/インポート データを読みたい場合。この方法では、 などのデータのコピーをイメージファイルにインポートします。
  • プロバイダが文書 プロバイダが所有するドキュメントへの長期間の永続的なアクセスを許可する場合は、ACTION_OPEN_DOCUMENTを使用してください。例として、ユーザーが イメージを編集してドキュメントプロバイダに保存できるようにするフォト編集アプリケーションがあります。

ACTION_GET_CONTENTもキットカットで文書プロバイダを使用しませんか?何が私に「長期的かつ永続的なアクセス」をもたらしてくれるのか、それがどういう意味ですか?

基本的に、次の2つのスニペットの違いは何ですか?

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("*/*"); 

答えて

13

はACTION_GET_CONTENTもキットカットで文書プロバイダを使用しませんか?

必ずしもそうである必要はありません。それはコンテンツを公開しているアプリケーションの実装に依存します。また、DocumentProviderは特定のタイプのContentProviderです。

「長期的、持続的なアクセス」

を持っていることから私を妨げるあなたが読むことができるようにするために、あなたのアプリケーションのためのそれとの一時的なアクセス許可の付与を有することができるバックACTION_GET_CONTENTから取得Uriおよび/またはコンテンツを書き込む。その補助金は最終的に失効します(プロセスが終了するなど)。例えば、Uriを文字列としてデータベースに保存することは意味がないかもしれません。

ストレージアクセスフレームワークの一部には、コンテンツのプロバイダが長期間(「長期的、永続的」)持続可能な許可付与を提供できるという概念が含まれています。アプリがAPIレベル19+でACTION_GET_CONTENTのような永続的なアクセス許可を提供するのを止めるものはありませんが、ACTION_OPEN_DOCUMENTでより一般的になります。

基本的に、次の2つのスニペットの違いは何ですか?

ACTION_GET_CONTENTは、いくつかのアプリケーション固有のUIに続いて、従来の選択ダイアログであるのに対しACTION_OPEN_DOCUMENTは、標準化されたファイルエクスプローラ形式のインターフェイスを提供するので、ユーザーエクスペリエンスは、多少異なるものになります。

このコンテンツのコンシューマとしての立場からは、コンテンツを今すぐ使用したい場合はACTION_GET_CONTENTです。 ACTION_OPEN_DOCUMENTは、コンテンツを今すぐ使用したい場合は後で使用します。

+1

私の経験では、決して選択ダイアログはありません。 2つのアクションは同じフルスクリーンUIになります。これはファイルエクスプローラのようなものですが、左の引き出しをアプリアイコンでいっぱいにスライドさせることもできます。各アクションを使用するときの唯一の違いは、この左側のアプリ一覧です。画像のMIMEタイプを渡すと、GET_CONTENTはダウンロードのような私のフォルダだけでなく、Google Photos、Dropboxなどの左の引き出しのスライドにもエントリを表示できます。OPEN_DOCUMENTを使用すると、左の引き出しにGoogleドライブ以外のコンテンツを提供するアプリはありません。 – Stephen

+2

@Stephen: "決して選択ダイアログはありません" - 'ACTION_GET_CONTENT'はAndroid 4.3以上のものを持ちます。 「各アクションを使用するときの唯一の違いは、左側のこのアプリリストです」 - 一部のアプリケーションはアクションの1つをサポートし、一部は他のアクションをサポートします。理想的には、Dropboxのようなアプリは、Android 4.4以降で 'ACTION_OPEN_DOCUMENT'をサポートし、Android 4.3以降では' ACTION_GET_CONTENT'をサポートするようになりました。 – CommonsWare

+0

私は4.3デバイスにアプリケーションをインストールしましたが、あなたは正しいです! 「ファイルエクスプローラ」タイプのインターフェイスではなく、「ピッカー」が表示されました。助けてくれてありがとう!ところで、あなたの本を愛してください。私は何年も加入しています。 – Stephen

関連する問題