android - 如何获取 Android 11 中已安装应用程序的列表

标签 android android-package-managers android-11 android-update-app

这行在开发者网站上有描述,但我没有完全理解

Call getInstalledApplications() or getInstalledPackages(). Both methods should return a filtered list.
实际上,我需要测试Testing package visibility behavior https://developer.android.com/training/package-visibility/testing

最佳答案

在 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>
    
  • 如果您不知道您使用的应用程序的所有软件包名称
    想查询,但有一组具有类似功能的应用程序
    你想查询然后你可以在里面使用一个 Intent 过滤器<queries>元素根据您的要求,就像它一样
    在下面的代码 fragment 中完成。
  • <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 ,schemehost .
  • 如果您想像以前一样查询用户的所有应用程序
    之前,您需要包含 QUERY_ALL_PACKAGES中的许可AndroidManifest .这是一个 normal许可,并尽快授予
    随着应用程序的安装。
  • <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    

    关于android - 如何获取 Android 11 中已安装应用程序的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67189934/

    相关文章:

    android - 无法使用 Gradle 安装获取类型为 'IdeaProject' 的模型

    java - Android在输入其他编辑文本值时更改编辑文本值

    java - List<UsageStats> 返回空

    java - 错误 : Access denied finding property "ro.serialno" in Android Studio

    Android 11 更新破坏了我的文件编写代码

    android - react-native flatlist 项目翻译动画不渲染

    android - 为什么调整大小会使我的图像看起来很奇怪?

    android - 使用 ApplicationInfo.FLAG_SYSTEM 过滤掉系统应用

    android - 在 Android 上获取首选/默认应用

    Android 11 - 访问我的应用程序 Android/Data 文件夹中的文件