我们有一个应用程序,当用户执行操作时,我们需要退出活动并启动主屏幕。
可以通过多个输入(即,来自多个活动)以及通过硬件按钮来执行动作。
我们所做的是开始回家的标准方式。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startMain);
这里发生的是,发射器显示为“使用完整动作...”消息。
出于安全考虑,非常关键的是,“使用...”对话框的“完整操作”未显示,但我们使用启动应用程序的启动器直接导航到主页。
注意:
我们甚至尝试使用'packageManager.clearPackagePreferredActivities'&添加一个侦听CATEGORY_HOME,ACTION_MAIN意图的活动。
但是没有运气,因为android.permission.SET_PREFERRED_APPLICATIONS权限不适用于我们支持的版本(> = Gingerbread)。
谢谢, 斯利拉姆
答案 0 :(得分:1)
如果您知道要使用哪个启动器,只需添加:
startMain.setPackage( "your.package.name" );
答案 1 :(得分:1)
感谢323go,对于setPackage部分。下面的代码就像一个魅力!
private void goHome() {
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
PackageManager pm = context.getPackageManager();
List<android.content.pm.ResolveInfo> activities = pm.queryIntentActivities(homeIntent, 0);
String className = activities.get(0).activityInfo.taskAffinity;
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.setPackage(className);
context.startActivity(startMain);
((Activity) context).finish();
}