我需要从我的应用程序调用我手机附带的默认主屏幕,这也是一个主屏幕应用程序。我试过搜索并找到了这个
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索引处应该有默认的启动器意图,但意图不保持该值。我需要某种许可吗? 感谢
答案 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);
它有效