我尝试过使用 getInstalledApplications
和 getInstalledPackages
,两者似乎都只提供默认应用程序。我只说默认应用程序,但这也不一定是真的。当我在 AVD (api 29) 上运行该应用程序时,它将包含 youtube。当我在我的实际手机 (31) 上运行它时,它不会显示 youtube,即使 youtube 是我手机上的默认应用程序。我不确定从这里开始尝试什么。
这就是我尝试获取应用程序信息的方式。
val packManager: PackageManager = packageManager
val allPackages: MutableList<ApplicationInfo> = packManager.getInstalledApplications(PackageManager.GET_META_DATA)
//packManager.getInstalledPackages(PackageManager.GET_META_DATA)
val packages: MutableList<ApplicationInfo> = mutableListOf<ApplicationInfo>()
//getting app info for "main apps" that can actually be opened
for (i in allPackages) {
if (packManager.getLaunchIntentForPackage(i.packageName) != null) {
packages.add(packages.size, packManager.getApplicationInfo(i.packageName, 0))
}
}
最佳答案
您的代码绝对有效,您只需在 list 文件中添加权限即可
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
请记住,如果您发布到 Play 商店,您的应用将受到检查,因为应用程序查询属于敏感信息。
关于android - 如何获取手机上所有已安装的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71403093/