12

This line is described on the developer site but I did not understand it perfectly

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

Actually, I need to test Testing package visibility behavior

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

Markus Kauppinen
  • 3,025
  • 4
  • 20
  • 30
ajay bisaveni
  • 129
  • 1
  • 1
  • 6

1 Answers1

25

There are 3 different ways of querying installed apps of the user in Android 11.

  1. If you already know which apps you want to query just mention the package names inside the <queries> element in the AndroidManifest.
<manifest package="com.nikit.app">
    <queries>
        <package android:name="com.fake.app" />
        <package android:name="com.fake.game" />
    </queries>
    ...
</manifest>
  1. In case you don’t know all the package names of the apps that you want to query but there is a set of apps with similar functionality that you want to query then you can use an intent filter inside the <queries> element according to your requirements like it has been done in the code snippet below.
<manifest package="com.nikit.app">
    <queries>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="image/jpeg" />
        </intent>
    </queries>
    ...
</manifest>

The <intent> element looks like <intent-filter> but there are few differences. element has the following restrictions:

  • The <intent> element can have only one <action> element.
  • The element can only have the following attributes : mimeType, scheme and host.
  1. If you want to query all the apps of the user like you were doing earlier, you need to include QUERY_ALL_PACKAGES permission in the AndroidManifest. It is a normal permission and it is granted as soon as the app is installed.
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
zhangxaochen
  • 32,744
  • 15
  • 77
  • 108
  • THANK YOU @shirley! but I have a doubt according to the developer site QUERY_ALL_PACKAGES is not recommended [link](https://developer.android.com/training/package-visibility/declaring#all-apps), is there any side affect ? – ajay bisaveni Apr 21 '21 at 06:28
  • hi@ajay bisaveni,About this maybe you can refer this [link](https://support.google.com/googleplay/android-developer/answer/10158779?hl) – zhangxaochen Apr 21 '21 at 06:33
  • @shirley In the 1st approach you mentioned, what if I want to add like 20+ package names? Is there any better way to do it? like wild card or something like `com.example.*` – Rohit Apr 18 '22 at 18:16