Fetch list of all apps on Android device (esp. Android TV) -
i'm trying fetch list of launchable apps on android tv (nexus player) running 5.1.1.
private static set<resolveinfo> getinstalledappsfrom(packagemanager packagemanager) { set<resolveinfo> activities = new hashset<>(); activities.addall(launcheractivitiesin(packagemanager)); if (build.version.sdk_int >= build.version_codes.lollipop) { activities.addall(leanbackactivitiesin(packagemanager)); } return activities; } private static list<resolveinfo> launcheractivitiesin(packagemanager packagemanager) { intent intent = new intent() .setaction(intent.action_main) .addcategory(intent.category_launcher); return getresolveinfos(packagemanager, intent); } private static list<resolveinfo> getresolveinfos(packagemanager packagemanager, intent intent) { return packagemanager.queryintentactivities(intent, packagemanager.match_default_only); } @targetapi(build.version_codes.lollipop) private static list<resolveinfo> leanbackactivitiesin(packagemanager packagemanager) { intent intent = new intent() .setaction(intent.action_main) .addcategory(intent.category_leanback_launcher); return getresolveinfos(packagemanager, intent); }
using above, can list of apps, doesn't complete list: netflix installed on device doesn't display, , settings missing.
running same code on android phone running 5.1.1 include settings app.
is there category_launcher
and/or category_leanback_launcher
might prevent apps showing up?
i tried:
packagemanager.getinstalledapplications(packagemanager.permission_granted);
to same effect.
the full code (at point of writing question) can checked out on github here, snippets appsrepository class.
the question did not contain enough detail answer correctly. set<resolveinfo>
correct - contained entry netflix.
the issue came trying use them:
intent launchintent = packagemanager.getlaunchintentforpackage(applicationinfo.packagename);
here, launchintent
can null, if package name correct. there call may return correct intent:
intent launchintent = packagemanager.getleanbacklaunchintentforpackage(applicationinfo.packagename);
still though, not find intent launch system settings. google settings displayed play services. change accepted answer if can solve this!
Comments
Post a Comment