Daniel Nord
Daniel Nord

Reputation: 565

Get a list of every launcher in Android

In my application I want to show a list of every available launcher (for homescreen) on that specific Android phone. Is it possible to get some kind of information from Android OS and how do I make this call?

Thanks!

Kind regards Daniel

Upvotes: 9

Views: 9070

Answers (3)

somard
somard

Reputation: 51

The code snippet above does NOT work accurately, as the result of launchers' list also includes system's setting's app whose package name is com.android.settings. This unexpected result happens on both my Pixel 2 (Android 8.0 ) and Nexus 6 (Android 7.1).

Upvotes: 2

Fede
Fede

Reputation: 945

You can query the list of ResolverInfo that match with a specific Intent. The next snippet of code print all installed launchers.

PackageManager pm = getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
for (ResolveInfo resolveInfo : lst) {
    Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName);
}

Upvotes: 21

Flavio
Flavio

Reputation: 6235

Try the following:

  1. Obtain the list of installed applications:

    List pkgList = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);

  2. Iterate over this list and obtain launcher activity using:

    getPackageManager().getLaunchIntentForPackage(packageName);

For details read here: PackageManager. Hope this helps.

Upvotes: 0

Related Questions