intent.setType()
を使用し、複数の幅広いタイプ(画像andビデオなど)を提供する方法はありますか?
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);
実際、複数のMIMEタイプがサポートされています。あなたも試してみましたか???
例:intent.setType("image/*,video/*")
は写真とビデオを表示します...
私にとってはうまくいきます。それもあなたのために働くはずです...
[編集]:これは部分的に機能します。すべてのギャラリーアプリが複数の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、または音声を選択できます。
申し訳ありませんが、これは現在サポートされていません。次の2つのオプションがあります。
(1)_*/*
_のMIMEタイプを使用し、ユーザーが処理できないもの(およびそのための適切な回復パスを持つもの)を選択できることを受け入れます。または
(2)独自のアクティビティセレクターを実装し、パッケージマネージャーで直接呼び出しを行って、インテントの両方のMIMEタイプを処理できるアクティビティを取得し、それらのリストをマージして、ユーザーに表示します。
また、setType()
はコンマ区切りのタイプではまったく機能しません。 MIMEタイプは1つだけでなければなりません。
|で区切ると、複数のMIMEタイプを渡すことができます
Intent.setType("application/*|text/*");