2

我有以下內容的意圖通知:通知 - 點擊火災錯誤的PendingIntent

clickIntent = PendingIntent.getService(
        getApplicationContext(), 
        Constants.REQUEST_CODE_NOTIFICATION_OTHER, 
        new Intent(getApplicationContext(), MainService.class) 
          .putExtra(Constants.EVENT, Constants.EVENT_TOGGLE_BLACK), 
        PendingIntent.FLAG_UPDATE_CURRENT); 

,並與下面的操作意圖一個動作:

PendingIntent closeIntent = PendingIntent.getService(
     getApplicationContext(), 
     Constants.REQUEST_CODE_NOTIFICATION_OTHER, 
     new Intent(getApplicationContext(), MainService.class) 
       .putExtra(Constants.EVENT, Constants.EVENT_DISABLE_SERVICE), 
     PendingIntent.FLAG_UPDATE_CURRENT); 

當我點擊該通知,收盤意圖被解僱。爲什麼?

這裏是我創建通知:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
      .setContentTitle(getString(R.string.app_name)) 
      .setContentText(getString(text)) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(getString(details))) 
      .setSmallIcon(R.drawable.ic_not) 
      .setContentIntent(clickIntent) 
      .setOngoing(true); 

    boolean showCloseButton = MainApp.getPrefs().enableCloseServiceButtonInNotification(); 
    if (showCloseButton) 
     builder.addAction(R.drawable.ic_close_black_24dp, getString(R.string.stop_service), closeIntent); 
+0

嘗試改變他們使用的代碼..都使用Constants.REQUEST_CODE_NOTIFICATION_OTHER – W0rmH0le

+0

我只是有這個變量,因爲我讀過這應該不是0.我會盡力... – prom85

回答

4

這是我的猜想......如果不行,我會刪除答案...

我認爲問題是,他們共享相同的更新次數:

這是創建:

clickIntent = PendingIntent.getService(
    getApplicationContext(), 
    Constants.REQUEST_CODE_NOTIFICATION_OTHER, 
    new Intent(getApplicationContext(), MainService.class).putExtra(Constants.EVENT, Constants.EVENT_TOGGLE_BLACK), 
    PendingIntent.FLAG_UPDATE_CURRENT); 

然後,這個新的CR eed:

PendingIntent closeIntent = PendingIntent.getService(
    getApplicationContext(), 
    Constants.REQUEST_CODE_NOTIFICATION_OTHER, 
    new Intent(getApplicationContext(), MainService.class).putExtra(Constants.EVENT, Constants.EVENT_DISABLE_SERVICE), 
    PendingIntent.FLAG_UPDATE_CURRENT); 

它與上一個類似,它設置爲PendingIntent.FLAG_UPDATE_CURRENT。 因此,第二個更新前一個。

嘗試對不同的PendingIntents使用不同的代碼。兩者都使用Constants.REQUEST_CODE_NOTIFICATION_OTHER

然後,Android將使用該代碼來區分它們。

+0

你是對。如果系統共享相同的請求ID,似乎可以重用這些意圖。謝謝 – prom85

+0

好聽!很高興我能幫到你 – W0rmH0le

+0

你救了我和我的頭髮我幾乎要用這種奇怪的行爲拉我已經流失的頭髮。除了笑話之外,我在我的'Notification'中有兩個'Actions',他們兩個都只是第一個觸發,我首先註冊到我的'NotificationBuilder'。向他們提供不同的'RequestCodes'解決了這個問題。 – DeltaCap