Расширение файла Android Q типа PDF, открытое через файловый менеджер

#android #android-studio #pdf #android-10.0 #file-manager

#Android #android-studio #PDF #android-10.0 #файловый менеджер

Вопрос:

Я пытаюсь предоставить пользователю возможность открывать файлы PDF через мое приложение. Итак, когда пользователь нажимает на файл PDF в файловом менеджере, у него должна быть возможность открыть его с помощью моего приложения вместе с другими приложениями для чтения PDF, если они доступны на его устройстве. Я добавил следующие фильтры намерений в манифест, просмотрев различные ответы здесь. Кажется, они работают ниже Api 29 (мое приложение отображается в списке при нажатии на файл PDF). Но для API Q приложение не отображается в списке.

Фильтры намерений:

            <!--For pdf-->
            <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"
                    android:host="*"
                    android:pathPattern=".*\.pdf"
                    android:mimeType="*/*"  />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
                <data android:host="*" />
                <data android:pathPattern=".*\.pdf" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
                <data android:host="*" />
                <data android:mimeType="application/pdf" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="file" />
                <data android:host="*" />
                <data android:pathPattern=".*\.pdf" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.EDIT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data
                    android:host="*"
                    android:mimeType="*/*"
                    android:pathPattern=".*\.pdf"
                    android:scheme="file" />
            </intent-filter>

            <intent-filter android:priority="999">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.OPENABLE" />

                <data android:host="*" />
                <data android:mimeType="application/octet-stream" />
                <data android:pathPattern=".*\..*\..*\..*\..*\.pdf" />
                <data android:pathPattern=".*\..*\..*\..*\.pdf" />
                <data android:pathPattern=".*\..*\..*\.pdf" />
                <data android:pathPattern=".*\..*\.pdf" />
                <data android:pathPattern=".*\.pdf" />
                <data android:scheme="content" />
            </intent-filter>
            <!--end pdf-->
  

Как я могу разрешить открывать PDF-файлы с помощью моего приложения в Android Q и выше?
PS: Все необходимые разрешения приняты

Ответ №1:

Я использую этот код для этого

 <activity
        android:name=".OpenPdfActivity"
        android:theme="@style/OpenPdfActTheme">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:mimeType="application/pdf"
                android:scheme="file" />
            <data
                android:mimeType="application/pdf"
                android:scheme="content" />
        </intent-filter>
    </activity>