Android Q PDF类型的文件扩展名通过文件管理器打开
Android Q PDF type file extension open through file manager
我试图让用户可以选择通过我的应用程序打开 pdf 文件。
因此,当用户从文件管理器中单击 pdf 文件时,他们应该可以选择使用我的应用程序打开它以及其他 pdf reader 应用程序(如果在他们的设备中可用)。
我通过在此处搜索各种答案,在清单中添加了以下意图过滤器。它们似乎在 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>
我试图让用户可以选择通过我的应用程序打开 pdf 文件。 因此,当用户从文件管理器中单击 pdf 文件时,他们应该可以选择使用我的应用程序打开它以及其他 pdf reader 应用程序(如果在他们的设备中可用)。 我通过在此处搜索各种答案,在清单中添加了以下意图过滤器。它们似乎在 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>