Android 11 以后使用 queryIntentActivities 查询获取到的值很大程度上是 Empty 的,因为 Android 11 以后只开放一些自动对您的应用可见的应用如:浏览器、apk安装等,其他应用查不到了。
解决这个问题的方法有两种:
- 在 Manifest 中添加 QUERY_ALL_PACKAGES 权限
但同样的这个权限在谷歌属于敏感信息权限,如果想上架谷歌应用商店,不建议这么做
- 在 Manifest 中添加 <queries> 标签
在谷歌文档的根据用例配置软件包可见性里的打开文件里有介绍用法
<!-- Place inside the <queries> element. -->
<intent>
<action android:name="android.intent.action.VIEW" />
<!-- If you don't know the MIME type in advance, set "mimeType" to "*/*". -->
<data android:mimeType="application/pdf" />
</intent>
如果是查看图片可以更换成:
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="image/*" />
</intent>
如果不知道 mime 的类型,可以写成:
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="*/*" />
</intent>
还可以参考文档管理软件包可见性
网友评论