Подтвердить что ты не робот

Несколько типов MIME в Android

Есть ли способ использовать intent.setType() и предоставлять несколько широких типов (например, изображения и видео)?

Я использую ACTION_GET_CONTENT. Кажется, он работает только с разделенными запятыми типами.

4b9b3361

Ответ 1

В 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

На самом деле поддерживаются несколько типов mime. Вы даже пробовали это???

Например: intent.setType("image/*,video/*") будет отображать фотографии и видеоролики...

Для меня это работает. Он тоже должен работать для вас...

Ответ 3

К сожалению, в настоящее время это не поддерживается. У вас есть два варианта:

(1) Используйте тип MIME */* и примите, что могут быть некоторые вещи, которые пользователь может выбрать, с которыми вы не сможете справиться (и для этого есть достойный путь восстановления); или

(2) Внедрите свой собственный выбор, сделав прямые вызовы менеджеру пакетов, чтобы получить действия, которые могут обрабатывать оба типа MIME для намерения, слияние этих списков и отображение их пользователю.

Кроме того, setType() не работает с разделенными запятыми типами вообще. Он должен быть одним и только одним типом MIME.

Ответ 4

вы можете передавать несколько типов mime, если вы разделяете с |

Intent.setType("application/*|text/*");

Ответ 5

для моей работы с точками с запятой.

Пример:

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

или

sIntent.putExtra("CONTENT_TYPE", "image/*;video/*"); 

Ответ 6

Для меня лучше всего было:

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 или аудио.