Android-расширение файла не работает со стандартным файловым браузером - PullRequest
0 голосов
/ 02 ноября 2018

Мое приложение указывает, что я могу открыть свое собственное расширение файла в файле манифеста, например так:

<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=".*\\.ext" />
<data android:pathPattern=".*\\..*\\.ext" />
<data android:pathPattern=".*\\..*\\..*\\.ext" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.ext" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ext" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ext" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.ext" />

Раньше он нормально работал со стандартным файловым браузером Android («Мои файлы») и все еще работает на более старых тестовых устройствах под управлением Android 4.3, но не работает на других моих устройствах под управлением Android 6 и 8. Он также работает на новые устройства с другими файловыми браузерами (хотя и не со всеми).

Я также пробовал png и pdf с соответствующими типами mime, но мое приложение не отображается в списке приложений, способных открывать эти файлы.

Что нужно стандартному файловому браузеру Android, чтобы приложение могло открывать файлы с моим расширением?

РЕДАКТИРОВАТЬ: Я также пытался

<data android:scheme="content"/>

1 Ответ

0 голосов
/ 05 января 2019

Попробуйте (смените «custom» на расширение, которое вы хотите использовать):

   <activity android:name=".MainActivity">
        <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=".*\\.custom"/>
            <!-- These additional pathPattern blocks are to allow for paths with
            additional periods in them. See:
            /2296671/pathpattern-dlya-sopostavleniya-rasshireniya-faila-ne-rabotaet-esli-v-drugom-meste-imeni-faila-suschestvuet-tochka -->
            <data android:pathPattern=".*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.custom"/>
            <data android:host="*"/>
        </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="file"/>
            <data android:pathPattern=".*\\.custom"/>
            <data android:pathPattern=".*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\.custom"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.custom"/>
            <data android:host="*"/>
        </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:mimeType="application/vnd.ni.custom" android:scheme="file"/>
        </intent-filter>
    </activity>
...