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

13
1个回答

26

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

  1. 如果您已经知道要查询哪些应用程序,请在AndroidManifest中的<queries>元素中提及包名称。
<manifest package="com.nikit.app">
    <queries>
        <package android:name="com.fake.app" />
        <package android:name="com.fake.game" />
    </queries>
    ...
</manifest>
  1. 如果你不知道想要查询的应用程序的所有软件包名称,但有一组具有类似功能的应用程序需要查询,则可以在<queries>元素内使用意图过滤器,根据你的需求进行设置,就像下面的代码片段中所示。
<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> 元素。
  • <intent> 元素只能具有以下属性:mimeTypeschemehost
  1. 如果您想查询用户的所有应用,就像以前所做的那样,您需要在 AndroidManifest 中包含 QUERY_ALL_PACKAGES 权限。它是一个 normal 权限,当应用安装后立即授予该权限。
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

谢谢@shirley!但是我有一个疑问,根据开发者网站的说法,QUERY_ALL_PACKAGES不被推荐使用链接,是否会有任何副作用? - ajay bisaveni
嗨,Ajay Bisaveni,关于这个问题,也许你可以参考这个链接:https://support.google.com/googleplay/android-developer/answer/10158779?hl。 - zhangxaochen
@shirley 在你提到的第一种方法中,如果我想添加20多个包名怎么办?有没有更好的方法来做到这一点?比如通配符或类似于com.example.*的东西。 - Rohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接