如何列出所有Android应用程序/软件包?

h6my8fg2  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(177)

早上好
我正在寻找一个解决方案,使用Android Studio -Kotlin列出所有Android软件包/应用程序。我知道在过去,getInstalledApplicationsgetInstalledPackagesqueryIntentActivitiesAsUser等方法用于此任务,但这些方法现在在最新的Android API版本中被弃用。我还尝试读取/data/system/packages.xml文件来提取所有的com* 包,但我认为这违反了Android安全性。你有什么建议吗?
谢谢
我尝试了这个方法,但它不起作用,因为getInstalledApplications不再支持。

PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d("TAG", "Installed package :" + packageInfo.packageName);
    Log.d("TAG", "Source dir : " + packageInfo.sourceDir);
    Log.d("TAG", "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
}
axr492tv

axr492tv1#

我相信另一个方法(使用对象而不是整数标志)不会被弃用
你试过使用这个方法吗?
我觉得你可以试试

packageManager.getInstalledApplications(PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA))
vfh0ocws

vfh0ocws2#

这样的东西能帮助你吗?:

val pm: PackageManager = context.packageManager
val packages: List<PackageInfo> = pm.getInstalledPackages(PackageManager.MATCH_ALL)

for (packageInfo in packages) {
    Log.d("PackageList", packageInfo.packageName)
}

编辑1:getInstalledPackages已被弃用,您需要用途:getInstalledPackages(int flags)
编辑2:它也被弃用了,所以让我们使用getInstalledPackages(PackageManager.MATCH_ALL)

相关问题