当通知被点击时调用活动

10

我想在用户下拉通知栏并点击通知时调用activity。我该怎么做?

3个回答

17

Notification 对象上调用 setLatestEventInfo(),提供一个 PendingIntent,当用户点击通知抽屉中的条目时,会启动您的活动。这里有一个演示这一点的示例项目


当在通知栏点击通知时,我可以启动一个活动。但是看起来它会创建新的活动,尽管当前活动正在运行。我尝试在调用PendingIntent时将标志传递到Intent中,但似乎没有起作用。那么,在点击通知时如何关闭当前活动以创建新活动呢? - Huy Tower
@HuyTower:在你的 Intent 上调用 setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) 应该可以解决问题。 - CommonsWare
@CommonsWare:对我来说完美运作! - Christian Schulzendorff

11

假设notif是你的Notification对象:

Intent notificationIntent = new Intent(this.getApplicationContext(), ActivityToStart.class);
PendingIntent contentIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, notificationIntent, 0);
notif.contentIntent = contentIntent;

1
当我点击通知栏上的通知时,我可以启动活动。但是看起来它会创建一个新的活动,即使当前活动正在运行。我尝试在调用PendingIntent时将标志传递到Intent中,但似乎没有起作用。那么,在单击通知时如何关闭当前活动以创建新活动? - Huy Tower

1
这里是当通知被点击时调用活动的代码。
Notification notif = new Notification(R.drawable.ic_launcher,"List of Contacts...", System.currentTimeMillis());
Intent notificationIntent = new Intent(context,AllContacts.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,            notificationIntent, 0);
notif.setLatestEventInfo(context, from, message, contentIntent);
nm.notify(1, notif);

1
当点击通知栏上的通知时,我可以启动活动。但看起来它会创建新的活动,即使当前活动正在运行。我尝试在调用PendingIntent时将标志传递到Intent,但看起来并没有起作用。那么,在点击通知时如何关闭当前活动以创建新活动呢? - Huy Tower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接