Мне удалось заставить всплывающие кнопки загрузки и предварительного просмотра на Android в GMail удалить фильтр данных схемы из моего намерения (удалить строку схемы и попробовать):
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.ext" />
<data android:host="*" />
</intent-filter>
Однако, согласно документации Android, «если схема не указана для фильтра намерений, все остальные атрибуты URI игнорируются». После удаления атрибутов схемы и URI единственным другим способом фильтрации намерений является использование типа Mime, и все мы знаем, что пользовательские расширения файлов не имеют зарегистрированных типов MIME.
Для справки, URI имеют вид:
- схема: // хост: порт / путь
- PATHPREFIX
- pathPattern
Так что без схемы все это падает. Обнаружив вышеизложенное, я попробовал очевидное - используйте «*» для схемы и даже попытался «. *». Ни один из тех не работал. Я надеюсь, что кто-то еще может построить мои испытания. Но я считаю, что это связано с выбором правильной схемы. К сожалению, единственные известные мне схемы - это http https содержимое и файл, и ни одна из вышеперечисленных не является волшебной пулей.
EDIT ::::::::
Я решил это вчера. Пожалуйста, посмотрите мое решение:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/*" host="*" android:pathPattern=".*.ext" android:scheme="content" />
</intent-filter>
Это намерение приведет к тому, что в gmail будут отображаться кнопки «Скачать / Просмотр» Фактически, это также приведет к открытию вашего приложения, когда файлы .ext отправляются как вложения в обычный почтовый клиент.