2

我需要从我的应用程序中调用手机附带的默认主屏幕,该应用程序也是一个主屏幕应用程序。我试过搜索并找到这个

    ArrayList<Intent> intentList = new ArrayList<Intent>();
    Intent intent=null;
    final PackageManager packageManager=getPackageManager();
    for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new 
                  Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), 
                                                        PackageManager.MATCH_DEFAULT_ONLY)) {
    intent=packageManager.getLaunchIntentForPackage(
                          resolveInfo.activityInfo.packageName);
    intentList.add(intent);
    }

此代码适用于所有其他启动器,但不适用于默认启动器。我尝试在代码中使用断点,发现在列表的 0 索引处应该有默认的启动器意图,但意图不包含该值。我需要某种许可吗谢谢

4

2 回答 2

7

希望这会做。

 Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
于 2011-12-15T06:31:56.000 回答
1

您可以简单地从 ResolveInfo 获取名称和类,并像 sonyercisson 一样手动制作意图,包名称是“com.sonyericsson.home”,类是“com.sonyericsson.home.HomeActivity”

   Intent intent = new Intent();
   intent.setClassName("com.sonyericsson.home", "com.sonyericsson.home.HomeActivity");
   intent.addCategory(Intent.CATEGORY_LAUNCHER);
   startActivity(intent);

有用

于 2011-12-16T05:36:24.033 回答