微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Q PDF类型的文件扩展名通过文件管理器打开

如何解决Android Q PDF类型的文件扩展名通过文件管理器打开

我试图让用户可以选择通过我的应用程序打开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-->

我如何也可以在Android Q及更高版本中使用我的应用打开pdf文件 PS:已获得所有必需的权限

解决方法

我正在使用此代码

<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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。