Android Java: ассоциация файлов и обработка намерений

Я пытаюсь реализовать фильтр намерений, который связывает конкретное расширение файла с моим приложением. Я искал примеры, но, к сожалению, не нашел решения. Вся информация, которую я нашел, устарела (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 они почти не работают. Вы можете попробовать MIME-тип application/x-bibtex, хотя я не знаю, распознает ли это Android.

CommonsWare 30.03.2021 15:56

Спасибо за важную информацию. Я попробовал ваше предложение, но Android его не распознал.

ashley 30.03.2021 16:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
11
0

Другие вопросы по теме