android - 如何获取手机上所有已安装的应用程序?

标签 android kotlin

我尝试过使用 getInstalledApplicationsgetInstalledPackages,两者似乎都只提供默认应用程序。我只说默认应用程序,但这也不一定是真的。当我在 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/

相关文章:

android - Android 中的配置更改以及在实例状态中保存哪些变量

java - 静态函数的线程安全

android - 每次构建时都会弹出错误的 "Generate Signed APK - APK(s) generated successfully"消息(生成一次签名的 apk 后)

android - 删除 fragment 中的溢出菜单 3 个点

android - 缺少 Google Services 3.0.0 的 api_key/current key 和 build.gradle 中的 Maps API key

java - 为了清楚起见,我如何将 MainActivity 功能拆分到另一个类中?

android - 如何从Kotlin的内部类[AsyncTask]访问扩展功能?

kotlin - 如何高效解析?

C# - 来自 Kotlin 的 with 关键字的模拟?

android - 使用 Glide 时图像未显示在 Recyclerview 上