Я пытаюсь реализовать фильтр намерений, который связывает конкретное расширение файла с моим приложением. Я искал примеры, но, к сожалению, не нашел решения. Вся информация, которую я нашел, устарела (10 лет назад), и я полагаю, что она больше не применима.
У меня есть локальный файл с расширением ".bib" (тип файла BibTeX), который хранится во внутренней памяти. Я хочу иметь возможность импортировать этот файл в свое приложение. Мои методы импорта находятся во фрагменте с именем DefaultOpener.
У меня несколько проблем:
1. Связь с пользовательским типом файла
Я попробовал несколько предложений, которые не сработали (включая android:pathPattern). Как и в этом примере Ассоциации файлов Android не работают (фильтр намерений по расширению), я объявил фильтр намерений в AndroidManifest.xml, но мой телефон не распознает тип файла «.bib» и сообщает мне, что нет программы, которая может открыть такой файл.
Есть ли другой способ зарегистрировать мой тип файла ".bib"?
2. Вызов метода из фрагмента, когда мое приложение выбрано для открытия файла ".bib"
Я использовал следующий фильтр намерений, который работает. К сожалению, учитываются все типы файлов (из-за android:mimeType = "*/*").
<intent-filter android:name = ".DefaultOpener">
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "*"
android:mimeType = "*/*"
android:scheme = "content" />
</intent-filter>
Как уже было сказано, это не мой желаемый результат. Я хочу иметь возможность связывать свое приложение только с файлами «.bib». Если я открою свой ".bib" файл в своем приложении, откроется MainActivity. Я хочу вызвать метод из фрагмента с именем DefaultOpener. Как я могу это сделать?
P.S. моя целевая версия Android - Android 10.
Спасибо за важную информацию. Я попробовал ваше предложение, но Android его не распознал.




Пользовательские расширения файлов никогда не поддерживались должным образом на Android, а в современных версиях Android они почти не работают. Вы можете попробовать MIME-тип
application/x-bibtex, хотя я не знаю, распознает ли это Android.