2

我目前在通知栏中显示一条通知,当用户单击它时,它应该将它们带到我的应用程序的根Activity。Android - 通知PendingIntent进入错误活动?

我用的android:finishOnTaskLaunch =“真” &机器人:clearTaskOnLaunch在我的清单=“真”来实现这个当用户按下从应用程序屏幕或主屏幕的应用程序图标。用户总是按照预期采取根本活动。

但是,当我从我的通知中使用以下代码时,用户将转到他们所在的最后一个屏幕,而不是StartActivity的根活动。

有谁知道我在做什么错?

Intent notificationIntent = new Intent(this, StartActivity.class); 
    contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(getApplicationContext(), getString(R.string.notification_app_name), notificationText, contentIntent); 
    mNotificationManager.notify(1, notification); 

添加这些标志有助于但它仍然没有在重新启动后的工作:

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

当我重新启动我的应用程序设置服务运行的弹出通知,当我做到这一点,通知会恢复到旧的不需要的行为。

解决:

加入这个标志我通知的contentIntent解决问题 - Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。

下面是一些优秀的信息在区域的链接Google dev group

+0

能不能介绍一下你是如何使用的详细说明:FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。 –

回答

3

试试这2个属性

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

有趣的是,它在我第一次运行应用程序时起作用,但是我有一个自动启动功能,当手机重新启动并且启用并激活时(EG:我重新启动并弹出通知),通知会恢复回来尽管在自动启动时运行完全相同的代码,但仍旧保留旧的行为。 –

+0

当你重新启动手机你的应用程序显示通知,并通过点击它应该达到根本的行动,而不是像它正在发生的一些其他活动,就像发生了什么? –

+1

是的我通过将此内容添加到我的通知的contentIntent解决了问题 - Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED –