从已经打开的活动中收到通知的意图?

时间:2012-10-29 14:17:41

标签: android

我有一个使用以下代码创建通知的活动:

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);

我保留了当前显示的应用中所有通知的列表。

单击通知后,将打开MainActivity。我在onResume()中有一些代码可以从列表中删除通知。这很好。

当通知被取消时,它会触发DeleteActivity,它也会从我的列表中删除它。这也很好。

问题是,如果MainActivity已经打开,并且单击了通知,则onResume()不会再次运行,因此通知消失了,但它不会从应用程序认为的通知列表中删除展示。

我想知道在收到意图时是否有任何方法可以执行特定的代码(甚至只是重启整个活动)。我知道我可以将其设置为使用DeleteActivity,但我宁愿让它打开MainActivity。

1 个答案:

答案 0 :(得分:3)

您可以通过覆盖onNewIntent来捕获活动中的通知点击。这就是我在我的应用程序中所做的。