85

intent.setType()複数の広範なタイプ (画像ビデオなど)を使用して提供する方法はありますか?

を使用していACTION_GET_CONTENTます。コンマ区切りの型だけで動作しているようです。

4

6 に答える 6

137

Android 4.4 でStorage Access Frameworkを使用する場合、 を使用しEXTRA_MIME_TYPESて複数の MIME タイプを渡すことができます。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimetypes = {"image/*", "video/*"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(intent, REQUEST_CODE_OPEN);
于 2014-05-02T11:11:53.363 に答える
4

申し訳ありませんが、これは現在サポートされていません。次の 2 つのオプションがあります。

(1) の MIME タイプを使用し*/*、ユーザーが選択できるものの、処理できないものがある可能性があることを受け入れます (そして、そのための適切な回復パスを用意します)。また

(2) 独自のアクティビティ チューザーを実装し、パッケージ マネージャーで直接呼び出しを行って、インテントの両方の MIME タイプを処理できるアクティビティを取得し、それらのリストをマージして、ユーザーに表示します。

また、setType()カンマ区切りの型ではまったく機能しません。唯一の MIME タイプでなければなりません。

于 2012-05-18T02:34:29.967 に答える
2

私にとって最もうまくいったのは:

intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);


このようにいくつかの MIME タイプを追加できます

intent.setType("image/*|application/pdf|audio/*");

ただし、インテント チューザーは、画像が MIME タイプ文字列の最初にあるため、画像を処理できるアプリケーションのみを表示します。

ただし、ファイル マネージャーがインストールされている場合 (私は CyanogenMod ファイル マネージャーでテストしました)、オーディオ、PDF、または画像のファイルを選択できます。

オーディオ MIME タイプが最初の場合、次のようになります。

intent.setType("audio/*|image/*|application/pdf");

インテント チューザーには、オーディオを処理するアプリケーションのみが表示されます。
ここでもファイル マネージャーを使用して、画像、PDF、またはオーディオを選択できます。

于 2015-04-07T16:56:23.597 に答える
0

| で区切ると、複数の MIME タイプを渡すことができます。

Intent.setType("application/*|text/*");
于 2014-09-02T12:16:31.910 に答える
-3

セミコロンを使った私の仕事のために。

例:

intent.setType("image/*;video/*")

また

sIntent.putExtra("CONTENT_TYPE", "image/*;video/*"); 
于 2014-03-04T16:38:56.737 に答える