3

我有一个服务,它显示一个通知,我希望每次用户按下它时都能转到我的应用程序的特定活动。通常它会是用户显示的最后一个,但并非总是如此。

如果活动之前启动过,它应该返回到它,如果没有,它应该在应用程序的任务中打开它,将它添加到活动任务中。

此外,在某些情况下,根据服务的逻辑,我希望更改通知的意图,以便它针对不同的活动。

我怎么做?是否可以不创建新通知并取消之前的通知?是否也可以不创建新任务或活动实例?

4

2 回答 2

1

不,一旦您发送通知,就不可能更改活动。

您可以在没有问题的任务堆栈上启动一个 Activity,请在此处查看教程中的通知服务:

http://blog.blundell-apps.com/notification-for-a-user-chosen-time/

您必须在通知上设置待处理的意图:

        // The PendingIntent to launch our activity if the user selects this notification
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, SecondActivity.class), 0);

        // Set the info for the view that shows in the notification panel.
        notification.setLatestEventInfo(this, title, text, contentIntent);

您可以看到待处理的意图采用正常的意图“ new Intent(this, SecondActivity.class”,因此如果您想要特定的行为(例如将其带到顶部而不是开始新的活动。像往常一样将标志添加到此意图。即FLAG_ACTIVITY_REORDER_TO_FRONT类似的东西

于 2012-06-08T20:19:32.250 回答
1

从平台版本 11 开始,您可以使用 Notification.Builder 构建通知。v4 支持库有一个等效类 NotificationCompat.Builder。

发送通知后,您无法更改 Activity,但可以使用新 Intent 更新通知。创建 PendingIntent 时,使用标志 FLAG_CANCEL_CURRENT。当您发送新通知时,请在调用 NotificationManager.notify() 时使用现有通知的 ID。

此外,您应该小心如何启动您的应用程序。状态栏通知指南告诉您如何设置后台堆栈。

于 2012-06-09T00:13:35.740 回答