Фильтр намерений работает на эмуляторе, но не на устройстве - PullRequest
0 голосов
/ 08 октября 2019

Я создаю собственный фильтр намерений, который откроет мое приложение, когда я коснусь файла с определенным расширением (в данном случае .myextension). Фильтр намерений приведен ниже. В настоящее время это работает идеально каждый раз, когда я открываю файл .myextension из моего эмулятора. Однако, когда я пробую его с моего устройства, он больше не работает.

На моем устройстве, когда я нажимаю файл .myextension в приложении браузера файлов, вместо автоматического открытия приложения отображается Unable to preview file.. Я пытался открыть файл из нескольких мест (приложение «Файлы», GDrive, папка «Загрузки», Slack / Gmail, как внутреннее хранилище, так и SDCard). Я использую Android 10 на своем эмуляторе и на своем устройстве.

<intent-filter android:label="My App">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:scheme="content"
        android:mimeType="*/*"
        android:host="*"
        android:pathPattern=".*\\.myextension" />
</intent-filter>

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

<data
    android:scheme="file"
    android:mimeType="*/*"
    android:host="*"
    android:pathPattern=".*\\.myextension" />

Я что-то упустилочевидно? Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 октября 2019

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

В большинстве случаев он не работает, так как он не привязан к эмулятору по сравнению сdevice.

Однако, когда я пробую его с моего устройства, он больше не работает.

A content Uri необязательно иметь расширение файла, так же, как URL https не обязательно иметь расширение файла. В большинстве случаев content Uri не будет иметь расширение файла, и такой Uri не будет соответствовать вашему <intent-filter>.

ACTION_VIEW в основном для файлов с широкораспознанный тип MIME.

Я также пытался заменить этот тег данных / добавить второй тег с этим блоком, но, похоже, он не помогает

file Uri значениямначиная с Android 7.0, как правило, запрещены.

0 голосов
/ 08 октября 2019
<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:pathPattern=".*\\.myextension" />
     <data android:pathPattern="/*.*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\..*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\..*\\..*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\..*\\..*\\..*\\..*\\.myextension" />
     <data android:pathPattern="/*.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.myextension" />
     <data android:host="*" />
</intent-filter>

Though it doesnt work in some of the file managers Better first try in ESExplorer.
...