意图,额外和恢复应用程序

时间:2015-11-09 12:58:50

标签: android android-intent

我有一个接收来自Google Cloud Messaging的通知的应用程序。 当用户点击通知时,我必须从通知中打开一个特殊窗口,所以这是我的应用程序的一部分:

gcmintentservice:

            final Intent i = new Intent(this, MapActivity.class);
            i.putExtra("notification",true);
            final PendingIntent contentIntent = PendingIntent.getActivity(
                    this, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);

这会增加额外的标志"通知"意图。

MapActivity.class - onResume():

    if (getIntent().hasExtra("notification")) {
    final Bundle extras = getIntent().getExtras();
    notification = extras.getBoolean("notification");
} else {
    notification = false;
}

一切正常,除了一个条件 - 当应用程序以某种方式从任务列表中恢复时#34;通知"额外仍然转移到意图。如何避免?

2 个答案:

答案 0 :(得分:0)

当应用程序恢复时,它将从暂停状态恢复,因此如果意图在暂停时具有额外功能,则在恢复时它将具有该功能。

您可以做的是在使用它之后从意图中删除额外内容:

getIntent().removeExtra("notification"); 

当申请恢复时,意图将不再包含"通知"键。

答案 1 :(得分:0)

最后,我找到了解决方案

起初 - https://groups.google.com/forum/#!topic/android-developers/yyd7_8JSwfc 改变来自“最近的”

的意图附加物是不可能的

解决方案:

        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)!=0) {
        Ln.d("launched from history");
        notification = false;
    }

基于此主题:Remove data from notification intent