2

Ich habe eine Meldung mit folgendem Inhalt Vorsatz:Benachrichtigung - klicken Feuer falsch 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); 

und eine Aktion mit folgenden Aktion Absicht:

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

Wenn ich die Benachrichtigung klicken, wird die nahe Absicht ist gefeuert. Warum?

Hier ist, wie ich die Benachrichtigung zu erstellen:

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

Versuchen Sie, den von ihnen verwendeten Code zu ändern .. beide verwenden Constants.REQUEST_CODE_NOTIFICATION_OTHER – W0rmH0le

+0

Ich habe nur diese Variable, weil ich gelesen habe, dass dies nicht 0 sein sollte. Ich werde das versuchen, obwohl ... – prom85

Antwort

4

Das ist meine Vermutung ist ... Wenn nicht funktioniert, ich die Antwort löschen werde ...

Ich glaube Problem ist, dass sie teilen gleiche Update-Nummer:

Dieses erstellt: cr

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

Dann ist diese neue eated:

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

Es ist ähnlich wie vorherige und es wird PendingIntent.FLAG_UPDATE_CURRENT gesetzt. Also, die zweite UPDATE die vorherige.

Versuchen Sie, einen anderen Code für verschiedene PendingIntents zu verwenden. Beide verwenden Constants.REQUEST_CODE_NOTIFICATION_OTHER.

Dann wird Android diesen Code verwenden, um sie zu unterscheiden.

+0

Sie waren Recht. System scheint die Absichten wiederzuverwenden, wenn sie dieselbe Anforderungs-ID teilen. Danke – prom85

+0

Gut zu hören! Ich bin froh, dass ich dir helfen konnte. – W0rmH0le

+0

Du hast mich und meine Haare gerettet. Ich wollte fast schon meine Haare verlieren, mit diesem seltsamen Verhalten. Witze auseinander Ich hatte zwei "Aktionen" in meiner "Benachrichtigung" und beide feuern nur die erste, die ich zuerst bei meinem 'NotificationBuilder' registriert habe. Durch die Bereitstellung von verschiedenen 'RequestCodes' für beide wurde das Problem behoben. – DeltaCap