【问题标题】:How to get a list of installed apps in Android 11如何在 Android 11 中获取已安装应用程序的列表
【发布时间】:2023-03-08 10:52:01
【问题描述】:

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

Call getInstalledApplications() or getInstalledPackages(). Both methods should return a filtered list.

其实我需要测试Testing package visibility behavior

https://developer.android.com/training/package-visibility/testing

【问题讨论】:

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


    【解决方案1】:

    在 Android 11 中有 3 种不同的方式来查询用户已安装的应用程序。

    1. 如果您已经知道要查询哪些应用程序,只需提及 <queries> 元素中的包名称 AndroidManifest
    <manifest package="com.nikit.app">
        <queries>
            <package android:name="com.fake.app" />
            <package android:name="com.fake.game" />
        </queries>
        ...
    </manifest>
    
    1. 如果您不知道您安装的应用程序的所有软件包名称 想查询,但有一组具有类似功能的应用程序 你想查询然后你可以在里面使用一个意图过滤器 &lt;queries&gt; 元素根据您的要求,就像它一样 在下面的代码 sn-p 中完成。
    <manifest package="com.nikit.app">
        <queries>
            <intent>
                <action android:name="android.intent.action.SEND" />
                <data android:mimeType="image/jpeg" />
            </intent>
        </queries>
        ...
    </manifest>
    

    &lt;intent&gt; 元素看起来像&lt;intent-filter&gt;,但几乎没有区别。元素有以下限制:

    • &lt;intent&gt; 元素只能有一个 &lt;action&gt; 元素。
    • 元素只能有以下属性:mimeType, schemehost
    1. 如果你想像以前一样查询用户的所有应用 之前,您需要在 AndroidManifest。这是一个normal 权限,它会尽快被授予 随着应用的安装。
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    

    【讨论】:

    • 谢谢@shirley!但我有一个疑问,根据开发者网站 QUERY_ALL_PACKAGES 不推荐link,有什么副作用吗?
    • hi@ajay bisaveni,关于这个也许你可以参考这个link
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多