2012-10-29 61 views
3

我有一個使用下面的代碼創建通知的活動:從已經打開的活動中收到通知的意圖?

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。

回答

3

您可以通過過濾onNewIntent來捕獲通知單擊您的活動。這是我在我的應用程序中所做的。

+0

謝謝,這似乎工作。 – Liam

+0

很高興我能幫到你。 –