2

我们有一个应用程序,当用户执行操作时,我们需要在其中退出活动并启动主屏幕。

该动作可以通过多个输入(即,来自多个活动)以及硬件按钮来执行。

我们所做的是发射回家的标准方式。

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)。

谢谢,斯里拉姆

4

2 回答 2

1

如果您知道要使用哪个启动器,只需添加:

startMain.setPackage( "your.package.name" );
于 2013-06-05T05:22:21.853 回答
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();
}
于 2013-06-05T06:01:21.207 回答