我有一个使用以下代码创建通知的活动:
Notification notification = new Notification(icon,
tickerText, 0);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
Context context = getApplicationContext();
CharSequence contentText = getString(R.string.subtitle);
Intent notificationIntent = new Intent(getBaseContext(),
MainActivity.class);
notificationIntent.putExtra("num", Integer.toString(i));
Intent deleteIntent = new Intent(getBaseContext(),
DeleteActivity.class);
deleteIntent.putExtra("num", Integer.toString(i));
PendingIntent contentIntent = PendingIntent.getActivity(
getBaseContext(), ran, notificationIntent, 0);
PendingIntent deletePendingIntent = PendingIntent
.getActivity(getBaseContext(), ran, deleteIntent, 0);
notification.setLatestEventInfo(context, text, contentText,
contentIntent);
notification.deleteIntent = deletePendingIntent;
final int NOTIF_ID = ran;
mNotificationManager.notify(NOTIF_ID, notification);
我保留当前显示的应用程序中所有通知的列表。
单击通知后,将打开主活动。我在onresume()中有一些代码可以从列表中删除通知。这很管用。
当通知被解除时,它会触发deleteActivity,这也会将其从我的列表中删除。这也很有效。
问题是,如果mainActivity已经打开,并且单击了通知,则onResume()不会再次运行,因此通知已消失,但它不会从应用程序认为显示的通知列表中删除。
我想知道在收到意图时是否有任何方法可以执行特定的代码片段(甚至只是重新启动整个活动)。我知道我可以将它设置为使用deleteActivity,但我宁愿让它打开mainActivity。
最佳答案
您可以通过覆盖onNewIntent来捕获活动中的通知单击。这就是我在应用程序中所做的。