从应用程序调用默认主屏幕

时间:2011-12-15 06:27:48

标签: android android-intent package-managers

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

    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索引处应该有默认的启动器意图,但意图不保持该值。我需要某种许可吗? 感谢

2 个答案:

答案 0 :(得分:7)

希望这样做。

 Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);

答案 1 :(得分: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);

它有效