Как исправить неработающий интент-фильтр в Android 8 - PullRequest
0 голосов
/ 22 апреля 2019

После обновления целевого SDK до 26 и тестирования на устройстве Android 8.1 нажатие на вложение электронной почты (наше расширение файла) в GMail больше не вызывает активности нашего приложения.

Я полагаю, что это связано с поддержкойнеявные намерения в Android 8 удаляются, но не могут определить альтернативный подход.

<activity
            android:name="com.abc.RestoreActivity"
            android:noHistory="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait">

            <!-- Filter to open file with gmail version < 4.2 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/fileextn" />
                <data android:pathPattern=".*\\.fileextn" />
                <data android:host="*" />
            </intent-filter>

            <!-- Filter to open file with gmail version 4.2 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/octet-stream" />
                <data android:pathPattern=".*\\.fileextn" />
                <data android:host="*" />
            </intent-filter>
        </activity>

Нажатие на вложение электронной почты в GMail теперь открывает диалоговое окно GMail, показывающее «Выбор вложения ...» с запущенным индикатором выполнения, и никогда не останавливается, пока не будет отменено.

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

1 Ответ

0 голосов
/ 22 апреля 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="content"
        tools:ignore="AppLinkUrlError" />
    <data android:mimeType="application/octet-stream" />
    <data android:pathPattern=".*\\.fileextn" />
</intent-filter>
...