web-dev-qa-db-ja.com

Intent.ACTION_GET_CONTENTとIntent.ACTION_PICKの違い

私が構築しているこの壁紙アプリケーションで壁紙として使用するために、デバイス上で必要な画像をユーザーが選択できるようにしています。何らかの理由で私が書くとき:

Intent myIntent = new Intent(Intent.ACTION_PICK);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

私はギャラリーに直行しますが、私が書くとき:

Intent myIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

ギャラリーまたはGoogleドライブから選択できます。ユーザーが毎回画像を取得するアプリを選択できるようにする最良の方法は何ですか?または、なぜこれら2つの異なるインテント定数が違いを生むのですか?

64
EGHDK

最初のIntentは無効です。 ACTION_PICKのプロトコル では、選択するコレクションを示すUriを指定する必要があります。

ユーザーが毎回画像を取得するアプリを選択できるようにする最良の方法は何ですか?

ユーザーがMIMEタイプに基づいて何かを選択するようにしたい場合は、ACTION_GET_CONTENTを使用します。

ユーザーが選択する特定のコレクション(Uriで識別される)がある場合は、ACTION_PICKを使用します。

同点の場合は、ACTION_GET_CONTENTを使用します。 ACTION_PICKは非推奨ではありませんが、 Dianne HackbornはACTION_GET_CONTENTを推奨します

92
CommonsWare

modern actionACTION_GET_CONTENTこれははるかによくサポートされています

ACTION_PICK

アクティビティアクション:データからアイテムを選択し、選択したものを返します。

Input:getData()は、アイテムを選択するデータのディレクトリ(vnd.Android.cursor.dir/*)を含むURIです。

Output:選択されたアイテムのURI。

Constant Value:"Android.intent.action.PICK"


Difference:-

Activity Action:ユーザーが特定の種類のデータを選択してそれを返すことを許可します

これはACTION_PICKとは異なります。ここでは、必要なデータの種類を言うだけです。ユーザーが選択できる既存のデータのURIではありません。

A ACTION_GET_CONTENTは、ユーザーに実行中のデータの作成を許可します(たとえば、写真の撮影または音声の録音)、それらをウェブ上で閲覧してダウンロード目的のデータなどを許可します。

Referencehttp://developer.Android.com/reference/Android/content/Intent.html#ACTION_GET_CONTENT

14
Tarsem Singh