intent.setType()複数の広範なタイプ (画像やビデオなど)を使用して提供する方法はありますか?
を使用していACTION_GET_CONTENTます。コンマ区切りの型だけで動作しているようです。
intent.setType()複数の広範なタイプ (画像やビデオなど)を使用して提供する方法はありますか?
を使用していACTION_GET_CONTENTます。コンマ区切りの型だけで動作しているようです。
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);
申し訳ありませんが、これは現在サポートされていません。次の 2 つのオプションがあります。
(1) の MIME タイプを使用し*/*、ユーザーが選択できるものの、処理できないものがある可能性があることを受け入れます (そして、そのための適切な回復パスを用意します)。また
(2) 独自のアクティビティ チューザーを実装し、パッケージ マネージャーで直接呼び出しを行って、インテントの両方の MIME タイプを処理できるアクティビティを取得し、それらのリストをマージして、ユーザーに表示します。
また、setType()カンマ区切りの型ではまったく機能しません。唯一の MIME タイプでなければなりません。
私にとって最もうまくいったのは:
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、またはオーディオを選択できます。
| で区切ると、複数の MIME タイプを渡すことができます。
Intent.setType("application/*|text/*");
セミコロンを使った私の仕事のために。
例:
intent.setType("image/*;video/*")
また
sIntent.putExtra("CONTENT_TYPE", "image/*;video/*");