有没有办法'在Android中'使用'跳过'完整动作'

时间:2013-06-05 05:15:49

标签: android

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

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

我们所做的是开始回家的标准方式。

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

谢谢, 斯利拉姆

2 个答案:

答案 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();
}