0

我遇到了有关如何获取主页启动器包名的问题。
在 android 中,有两种类型的 home 启动器:

  1. 原装发射器
  2. 3-third 启动器,如 go-launcher 或 OEM

所以,我们不能使用指定的包名来启动它。
最后,我想出了一个解决方案。
有没有其他更好的方法来做到这一点?

    //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=#!topic/android-developers/-5aGSOdwJ-8

4

1 回答 1

0

您可以将 Intent 与 CategoryCATEGORY_HOME和 Action一起使用ACTION_MAIN

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
于 2013-03-21T15:26:18.033 回答