Android通知返回错误的活动

时间:2017-08-26 16:25:14

标签: java android

大家好, 我正在服务中实施通知,一旦出现通知点击通知 - 它会打开一个活动。 我在我的服务类中有一个runnable中的代码,它每隔几秒就会运行一次:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(android.R.drawable.ic_dialog_email)
            .setContentTitle(notificationTitle)
            .setContentText(notificationMessage);

    NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();

    builder.setStyle(bigText);

    Intent resultIntent = new Intent(this, openemailactivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    builder.setContentIntent(pendingIntent);

    Notification notification = builder.build();
    notification.flags = Notification.FLAG_AUTO_CANCEL;

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(0, notification);

在我的名为“openemailactivity”的通知活动中,我有一个按钮,其中包含一个代码,用于将用户返回到名为“MainActivity”的主页活动:

btnReturnToMainScreen.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        }
    });

一切正常,直到我重新启动Android手机,服务在启动时加载(按预期),然后生成通知,然后我点击它。 然后,当我点击它时,“openemailactivity”活动也按照预期打开,然后我点击打开“MainActivity”(上面的代码)的按钮,然后它就完成了O.k。

现在问题就出现了!

打开其他活动后(“MainActivity”),然后服务再次弹出通知(Notification timer \ checking在一个运行不间断的定时Handler \ Runnable中运行) - 然后我点击通知本身那是创造的 -   它应该调用的活动(“openemailactivity”)不再被调用了! 而是 - 弹出最后一个被调用的活动(“MainActivity”),这是错误的!

只有当我重新启动手机,服务在启动时加载,生成通知,我点击它,它打开正确的活动,然后我从按钮(OnClickListener)调用代码时,问题才会开始。

我对如何解决这个问题一无所知。

您认为这可能是什么问题? 我做错了什么,我该如何解决?

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

奇怪但看起来我找到了答案(希望 - 它需要得到更全面的测试,因为在这种环境中总是存在惊喜)。

我试着设置:

resultIntent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);

在服务中存在的通知代码中,在声明此变量(resultIntent)之后。

至于现在它看起来像是有效的! 通过查看此标志的Android文档,看起来它可能解释了我遇到的问题: {{3}} (搜索:“FLAG_ACTIVITY_CLEAR_TOP”的解释。