2

我遇到了一些問題,並且在很多地方看過,我似乎找不到答案。Android通知打開最後的活動,而不是正確的活動

我有一項服務,該服務檢查網站上的通知,並提醒用戶新的通知。當用戶點擊這個通知時,它應該把他們帶到一個活動(我會稱之爲評論活動)

但是,如果我點擊應用程序內的通知,什麼都不會發生。如果我在應用程序外部單擊通知,它會打開應用程序關閉前顯示的最後一個活動。

這是我用來顯示通知代碼:

 Notice n; //Notification from site 

     .... 
     Intent nIntent = new Intent(Intent.ACTION_MAIN); 
     nIntent.setClass(getApplicationContext(), CommentActivity.class); 
     nIntent.putExtra("activity_id", n.getFeedID()); 
     nIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, nIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

     NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(FlankNotificationService.this) 
     .setSmallIcon(R.drawable.ic_launcher) 
     .setContentTitle(n.getTitle()) 
     .setContentText(n.getText()) 
     .setContentInfo(arg0.getNotificationAmount() + " notification" + (arg0.getNotificationAmount() == 1 ? "." : "s.")) 
     .setContentIntent(pIntent); 

     Notification mm = mBuilder.getNotification(); 

     mm.flags = Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL; 
     mm.tickerText = n.getText(); 

     .... 

     mNM.notify(1558, mm); 

因此,而不是開放的CommentActivity,它會繼續執行該應用程序(如果應用程序沒有打開),或者什麼也不做(如果應用程序是打開)

謝謝。

編輯1:

新增Intent.FLAG_ACTIVITY_REORDER_TO_FRONT標誌意圖。仍然沒有解決問題。

編輯2:

,我發現我的問題的原因(這是一個相當愚蠢的原因)。當CommentActivity啓動時,如果它沒有從savedInstance或Intent.getExtra傳遞任何數據,那麼它將會關閉。我之所以沒有想到這一點,是因爲它甚至沒有顯示過渡。修復Intent.getExtra問題後,它現在可以工作。謝謝你所有的答案。

+0

這就是它應該做的。就像再次點擊啓動器中的應用程序圖標一樣。如果您希望此活動始終顯示,請在清單中用'android:clearTaskOnLaunch =「true」'標記您的活動。 –

+0

添加到評論活動?我試過了,但仍然沒有解決問題。 – edkek

+0

_ + 1_這裏是最好的解決方案http://stackoverflow.com/questions/31448840/android-how-to-open-last-activity-when-tapping-notification – nAkhmedov

回答

0

您可能需要將Intent.FLAG_ACTIVITY_REORDER_TO_FRONT標誌添加到您的意圖。這將確保在處理意圖時CommentActivity是恢復活動的活動。

+0

添加標誌後,它仍然不能修復問題。我已經用添加了標誌的新代碼更新了這個問題。 – edkek