如何最小化我的活动并将主页启动器放在前面,而不是以前的活动?
我需要这个,因为我从我的应用程序(不是动态壁纸,只是一个常规应用程序)设置了一个壁纸,并且需要将主页启动器放在前面,以便用户查看新壁纸。是否有可能做到这一点?我试过finish()
了,但它把以前的应用程序带到了前面,而不是主启动器。
如何最小化我的活动并将主页启动器放在前面,而不是以前的活动?
我需要这个,因为我从我的应用程序(不是动态壁纸,只是一个常规应用程序)设置了一个壁纸,并且需要将主页启动器放在前面,以便用户查看新壁纸。是否有可能做到这一点?我试过finish()
了,但它把以前的应用程序带到了前面,而不是主启动器。
Action 的意图:
Intent.ACTION_MAIN
和类别:
Intent.CATEGORY_HOME
就足够了
前任:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
这将允许用户回到他们各自的家中。无论启动器类型如何(adw、launcherpro、库存等)。具体来说,所有启动器都将处理此 Intent Action/Category。
试试这个。我知道这是一个旧帖子,但希望将来对某人有所帮助。
final PackageManager packageManager=getPackageManager();
Intent intent = null;
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
List<Intent> targettedHomeIntents = new ArrayList<Intent>();
for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), PackageManager.MATCH_DEFAULT_ONLY))
{
if(!getPackageName().equals(resolveInfo.activityInfo.packageName)) //if this activity is not in our activity (in other words, it's another default home screen)
{
intent = new Intent(intentToResolve);
//intent.setClassName(resolveInfo.activityInfo.applicationInfo.packageName, resolveInfo.activityInfo.name);
intent.setPackage(resolveInfo.activityInfo.applicationInfo.packageName);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
targettedHomeIntents.add(intent);
}
}
if(targettedHomeIntents.size() > 0){
if(targettedHomeIntents.size() == 1) {
startActivity(targettedHomeIntents.get(0));
} else {
Intent chooserIntent = Intent.createChooser(targettedHomeIntents.remove(0), "Select Home");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targettedHomeIntents.toArray(new Parcelable[]{}));
startActivity(chooserIntent);
}
}
添加Intent.FLAG_ACTIVITY_TASK_ON_HOME
到意图标志中,将启动器与目标活动一起带到最前面的任务,这样当你完成目标活动时,启动器就会出现。