How to get a list of installed apps in Android 11
Asked Answered
P

1

13

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

Pirandello answered 21/4, 2021 at 5:47 Comment(0)
V
26

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"/>
Videogenic answered 21/4, 2021 at 6:7 Comment(4)
THANK YOU @shirley! but I have a doubt according to the developer site QUERY_ALL_PACKAGES is not recommended link, is there any side affect ?Pirandello
hi@ajay bisaveni,About this maybe you can refer this linkVideogenic
@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.*Dissever
to be considered, QUERY_ALL_PACKAGES is restricted in Android 11 and above when you submit to Google Play. source: developer.android.com/training/package-visibilityBrushwork

© 2022 - 2024 — McMap. All rights reserved.