如何获取 Android 11 中已安装应用程序的列表
Posted
技术标签:
【中文标题】如何获取 Android 11 中已安装应用程序的列表【英文标题】:How to get a list of installed apps in Android 11 【发布时间】:2021-07-15 07:11:11 【问题描述】:这行在开发者网站上有描述,但我没有完全理解
Call getInstalledApplications() or getInstalledPackages(). Both methods should return a filtered list.
其实我需要测试Testing package visibility behavior
https://developer.android.com/training/package-visibility/testing
【问题讨论】:
【参考方案1】:在 Android 11 中有 3 种不同的方式来查询用户已安装的应用程序。
-
如果您已经知道要查询哪些应用程序,只需提及
<queries>
元素中的包名称
AndroidManifest
。
<manifest package="com.nikit.app">
<queries>
<package android:name="com.fake.app" />
<package android:name="com.fake.game" />
</queries>
...
</manifest>
-
如果您不知道您安装的应用程序的所有软件包名称
想查询,但有一组具有类似功能的应用程序
你想查询然后你可以在里面使用一个意图过滤器
<queries>
元素根据您的要求,就像它一样
在下面的代码 sn-p 中完成。
<manifest package="com.nikit.app">
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
...
</manifest>
<intent>
元素看起来像<intent-filter>
,但几乎没有区别。元素有以下限制:
<intent>
元素只能有一个 <action>
元素。
元素只能有以下属性:mimeType
,
scheme
和 host
。
-
如果你想像以前一样查询用户的所有应用
之前,您需要在
AndroidManifest
。这是一个normal
权限,它会尽快被授予
随着应用的安装。
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
【讨论】:
谢谢@shirley!但我有一个疑问,根据开发者网站 QUERY_ALL_PACKAGES 不推荐link,有什么副作用吗? hi@ajay bisaveni,关于这个也许你可以参考这个link以上是关于如何获取 Android 11 中已安装应用程序的列表的主要内容,如果未能解决你的问题,请参考以下文章
WifiManager 中的 startScan() 在 Android P 中已弃用