通过意图回到之前的活动

时间:2016-11-20 08:51:53

标签: android android-intent

我已经得到以下呼叫流程:

外部应用 - >我的活动A - >打开浏览器 - >我的活动B

从外部应用程序,通过startActivityForResult可以开始我的活动A.活动A可以打开浏览器查看网站,从网站上,用户可以点击链接并打开活动B的链接。现在我想关闭B然后回到A.我该怎么办?如果我在B上拨打finish(),我会看到浏览器。

2 个答案:

答案 0 :(得分:2)

您可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP意图标记从活动B再次启动活动A.在此之前,您还需要更改清单中活动A的launch mode,使其成为standard以外的其他内容

Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

我注意到,如果您不更改活动A的启动模式,则仍会清除位于activity A顶部的其他活动,但不会调用onNewIntent,因为活动将是摧毁并重新创造。

答案 1 :(得分:1)

我正在使用这个包装器将一个Activity移到前面:

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
protected static int moveToFront(Context ctx) {
    int result = 0;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // honeycomb
        final ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
        final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

        for (int i = 0; i < recentTasks.size(); i++) 
        {
               O.Log.d(TAG, "Application executed : " 
                       +recentTasks.get(i).baseActivity.toShortString()
                       + "\t\t ID: "+recentTasks.get(i).id+"");  
               // bring to front                
               if (recentTasks.get(i).baseActivity.toShortString().indexOf(PACKAGE_NAME) > -1) {                     
                  activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
                  result = 1;
                  break;
               }else{
                   result = 2;
               }
        }
    }
    return result;
}

结果值:

0 - 旧的Android版本 1 - 好的 2 - 错误