如何从推送通知中打开活动并忽略之前的应用程序状态

时间:2016-07-15 05:47:39

标签: android android-fragments android-activity push-notification

我正在开发一个Android应用程序。它会收到推送通知。我想在用户打开通知时打开活动P.

我的应用程序具有以下活动层次结构:

  1. 主要活动(M),创建三个片段(F1,F2,F3)。
  2. F3里面还有一个片段(F31)。 F31有一个列表视图,显示一些视频列表。用户可以在此处播放任何视频表单。
  3. 当用户点击来自F31的任何视频时,它会创建活动P,用于播放视频。
  4. 现在,当我收到推送通知并打开它时,我想打开活动P.但我也希望当活动P启动并且用户按下时,它应该转到F31。因为P的父亲是F31。

    当用户打开推送通知时,我的应用程序可以处于任何状态。我的意思是用户可以在F1或F2或F3。但是当用户打开推送通知时,它应该启动活动P,然后按下它应该转到F31。 它应该忽略应用程序的先前状态。

    我可以通过推送通知启动活动P,但我不知道如何保证在背面按下它将落在F31上。

    请建议我该怎么办?

2 个答案:

答案 0 :(得分:1)

尝试将其放在活动P:

@Override
public void onBackPressed() {

    Intent intent = new Intent(this, M.class);
    intent.putExtra("key", "goToF31");
    startActivity(intent); 
} 

活动F onCreate内的第一件事:

    String signal = getIntent().getStringExtra("key");

    if (signal.equals("goToF31")) {

        // open the F31 fragment
        F31 f31 = new F31();
        fm.beginTransaction().replace(R.id.mainContainer, f31).commit(); 
    }

当suer点击打开活动F和片段F31的视频活动内的后退按钮时,逻辑被置于意图之中。 这可能有用,但为了感觉正确,你必须把动画看起来像它回去了。

答案 1 :(得分:0)

如果你正在使用PendingIntent试试这个----

 // Use TaskStackBuilder to build the back stack and get the PendingIntent 
PendingIntent pendingIntent =
    TaskStackBuilder.create(this)
                    // add all of DetailsActivity's parents to the stack,
                    // followed by DetailsActivity itself
                    .addNextIntentWithParentStack(upIntent)
                    .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);