Проблема с фильтром намерений для открытия файла в приложении Android - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь открыть любой файл с расширением .conf в моем приложении для Android.Вот что у меня есть в моем AndroidManifest.xml:

<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:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>
<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="content" />
    <data android:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>

Но, когда я нажимаю на файл .conf в папке Downlaods, он говорит: «Не удается открыть файл».

Вот что я получаю, когда использую Intent Intercept :

enter image description here

Что я делаю не так?

1 Ответ

2 голосов
/ 17 мая 2019

Удалить:

<data android:host="*" />

из обеих <intent-filter> записей и:

<data android:pathPattern=".*\\.conf" />

из content.

Расширения файлов не используются многона андроид.Начиная с Android Q, файлы мало используются на Android.Для ContentProvider не требуется помещать файловое расширение на content Uri, как вы можете видеть из Uri на скриншоте.

Если вы хотите поддерживать общиеIntent таких действий, как ACTION_VIEW, лучше всего сохранить файл в общем мета-формате (например, JSON, XML) с соответствующим расширением файла, а затем использовать фильтр <intent-filter> для соответствующего типа MIME.Вам нужно будет учитывать возможность выбора пользователем файла, который не был создан вашим приложением, хотя технически вам придется иметь дело с этим даже с вашим пользовательским расширением.

...