私が構築しているこの壁紙アプリケーションで壁紙として使用するために、デバイス上で必要な画像をユーザーが選択できるようにしています。何らかの理由で私が書くとき:
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つの異なるインテント定数が違いを生むのですか?
最初のIntent
は無効です。 ACTION_PICK
のプロトコル では、選択するコレクションを示すUri
を指定する必要があります。
ユーザーが毎回画像を取得するアプリを選択できるようにする最良の方法は何ですか?
ユーザーがMIMEタイプに基づいて何かを選択するようにしたい場合は、ACTION_GET_CONTENT
を使用します。
ユーザーが選択する特定のコレクション(Uri
で識別される)がある場合は、ACTION_PICK
を使用します。
同点の場合は、ACTION_GET_CONTENT
を使用します。 ACTION_PICK
は非推奨ではありませんが、 Dianne HackbornはACTION_GET_CONTENT
を推奨します 。
modern actionはACTION_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