我遇到一个关于如何获得home launcher packagename的问题。
在android中,有两种类型的home launcher:
- 初始启动器
- 3-third launcher,如go-launcher或OEM
所以,我们不能使用指定的packagename来启动它。最后,我想出了一个解决办法。
还有其他更好的方法吗?
//find out the package with ACTION_MAIN & CATEGORY_HOME
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
PackageManager pm = this.getPackageManager();
List<ResolveInfo> ris = (List<ResolveInfo>) pm.queryIntentActivities(i,
PackageManager.MATCH_DEFAULT_ONLY);
Log.i("", ris.size() + "");
//seletc the first one , doc says the first one is the home launcher currently
if (ris != null && ris.size() > 0) {
String pkg = ris.get(0).activityInfo.packageName;
Log.i("HOME PKG NAME ", pkg);
//start it
i.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name);
startActivity(i);
}
感谢https://groups.google.com/forum/?fromgroups=#!主题/android开发者/5 agsodwj-8
您可以使用类别CATEGORY_HOME
和动作ACTION_MAIN
的意图。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);