Как установить приложения по умолчанию или позволить пользователю выбрать приложение? - PullRequest
8 голосов
/ 19 марта 2019

В настоящее время я пытаюсь создать несколько простых приложений для Android, чтобы заменить ими стандартные приложения.

Я уже видел в этом посте , как установить приложение SMS по умолчанию:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="vnd.android-dir/mms-sms" />
</intent-filter>

Но мне было интересно, как добиться того же для этих приложений:

  • Приложение камеры (для съемки)
  • Приложение Галерея / Фото (для выбора и просмотра изображений)
  • Приложение для контактов (Для просмотра, редактирования, удаления и вызова контактов)
  • Телефонное приложение (для вызова контактов / телефонных номеров и приема входящих вызовов)
  • Интернет-браузер (для работы в Интернете)
  • Приложение клавиатуры (для ввода текста, как на клавиатуре по умолчанию)
  • Приложение запуска (для отображения всех установленных приложений на главном экране)

Я уже заметил, что практически невозможно установить приложение как приложение по умолчанию программно без участия пользователя. Это было бы основной целью, но было бы также хорошо, если бы пользователь мог выбрать, какое приложение он хочет использовать в качестве приложения по умолчанию. Но я хочу быть уверен, что приложения, которые я перечислил выше, доступны для выбора. Итак, мой вопрос: какие типы MIME я должен добавить к фильтрам намерений в файле манифеста Android?

Ответы [ 3 ]

5 голосов
/ 19 марта 2019

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

Смотрите здесь для получения дополнительной информации о Intent и Intent Filters.

Принудительное использование приложения в качестве приложения по умолчанию возможно только с правами root.

2 голосов
/ 29 марта 2019

Итак, мой вопрос: какие типы пантомимы мне нужно добавить к фильтрам намерений в файле манифеста Android?

mimetype это просто стандарт описания контента, и следующийобработка.Это не что-то новое в Android, вы можете проверить больше информации о типах медиа Wiki страница .Эта информация об атрибуте mimetype в документации Android :

android: mimeType - тип мультимедиа MIME, например image / jpeg или audio / mpeg4-generic.Подтипом может быть подстановочный знак звездочки, указывающий, что любому подтипу соответствует

Однако, как вы можете видеть, префикс vnd для типа MIME является «префиксом поставщика», что означает, что не официальный тип IETF MIME.Так что вам нужно будет проверить этот тип для каждого приложения.Просто несколько примеров, что мы имеем ниже.

Примечание!Чтобы установить приложение по умолчанию, вам нужно сначала указать android.intent.action.Потому что это основные флаги между процессами взаимодействия, поэтому Launcher (например,) не будет иметь mimetype и только намеренных действий android.intent.action.MAIN, android.intent.action.SET_WALLPAPER.


Камера:

<data android:mimeType="vnd.android.cursor.dir/image" />
<data android:mimeType="vnd.android.cursor.dir/video" />

Изображение / видео / аудио:

<data android:mimeType="video/*" />
<data android:mimeType="video/mpeg4" />
<data android:mimeType="video/mp4" />
<data android:mimeType="video/3gp" />
......
<data android:mimeType="image/*" />
<data android:mimeType="application/sdp" />
......
<data android:mimeType="audio/x-mpegurl" />
<data android:mimeType="audio/mpegurl" />
<data android:mimeType="application/vnd.apple.mpegurl" />
<data android:mimeType="application/x-mpegurl" />
....

Контакты:

<data android:mimeType="vnd.android.cursor.item/phone" />
<data android:mimeType="vnd.android.cursor.item/person" />
<data android:mimeType="vnd.android.cursor.dir/calls" />

Браузер:

<data android:mimeType="application/xhtml+xml"/>
<data android:mimeType="application/vnd.wap.xhtml+xml"/>
<data android:mimeType="vnd.android.cursor.item/postal-address" />
<data android:mimeType="vnd.android.cursor.dir/bookmark"/>
<data android:mimeType="vnd.android.cursor.item/download"/>
2 голосов
/ 19 марта 2019

Я не уверен, но, используя Intent.createChooser(), вы получите решение нажмите здесь

...