0

ausgelöst wird Ich entwickle eine Android-App. In meiner App zeige ich Benachrichtigungen an, die von einem Broadcast-Empfänger ausgelöst werden. Das Anzeigen der Benachrichtigung vom Empfänger funktioniert einwandfrei. Aber ich habe ein kleines Problem mit dem, was ich will. Es ist eine Selbstkündigungsbenachrichtigung. Kann nicht vom Benutzer geschlossen werden. Was jetzt passiert ist, wenn es gefeuert wird, wird es nicht als neue Benachrichtigung in der Benachrichtigungsleiste angehängt, wenn eine bereits existiert. Gerade vorhandenes wird immer wieder gezeigt. Was ich will ist, ich will es angehängt werden, wann immer es ausgelöst wird, egal wie viele Benachrichtigungen von diesem Benachrichtigungsmanager innerhalb des Empfängers existieren. Bitte sehen Sie mein Szenario unten.So zeigen Sie eine Benachrichtigung, die jedes Mal neu hinzugefügt wird, wenn sie von Broadcast-Empfänger in Android

Das ist mein Empfänger, die

public class GalleryImageUploadReceiver extends BroadcastReceiver { 

    private Context context; 
    private NotificationCompat.Builder notification; 
    private static final int NOTIFICATION_ID = 1; 
    private NotificationManager nm; 

    @Override 
    public void onReceive(Context pContext, Intent intent) { 
     this.context = pContext; 
     initialize(intent); 
     showProcessNotification(); 
     uploadImagesToServer(); 
    } 

    private void initialize(Intent intent) 
    { 
     //initialize data 
    } 

    private void uploadImagesToServer() 
    { 
     // do async task and close itself 
     if(nm!=null) 
     { 
      nm.cancel(NOTIFICATION_ID); 
     } 
    } 

    public void showProcessNotification() 
    { 
     try{ 

      notification = new NotificationCompat.Builder(context); 
      notification.setAutoCancel(true); 
      notification.setSmallIcon(R.mipmap.ic_launcher); 
      notification.setWhen(System.currentTimeMillis()); 
      notification.setTicker("Uploading image(s)..."); 
      notification.setContentTitle(context.getResources().getString(R.string.app_name)); 
      notification.setContentTitle("Uploading image(s)..."); 
      notification.setAutoCancel(true); 
      notification.setOngoing(true); 
      notification.setDefaults(Notification.FLAG_ONGOING_EVENT); 
      nm = (NotificationManager)context.getApplicationContext().getSystemService(context.getApplicationContext().NOTIFICATION_SERVICE); 
      nm.notify(NOTIFICATION_ID,notification.build()); 
     } 
     catch (Exception e) 
     { 

     } 


    } 


    public void uploadImages(Context context,Intent intent) 
    { 
     onReceive(context,intent); 
    } 
} 

Dies ist, wie ich in der Tätigkeit am Brennen Benachrichtigung über Empfänger selbst schließt Benachrichtigung Feuer

//inside a click listener 
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver(); 
receiver.uploadImages(getBaseContext(),intent); 

Das Problem mit diesem Code ist, wenn ich klicken , überschreibt die neue Benachrichtigung die vorhandene Benachrichtigung, sodass nur eine Benachrichtigung auf dem Bildschirm angezeigt wird. Egal wie oft ich es anklicke. Wenn zum Beispiel die Benachrichtigung 5 Sekunden lang dauert, wenn ich die Taste erneut 2 Sekunden nach dem ersten Klick auf die Taste klicke, dauert diese bestehende 7 Sekunden. Neues wird nicht in der Benachrichtigungsleiste hinzugefügt. Wie kann ich es als neues anhängen, wenn die Schaltfläche geklickt wird?

Antwort

1

Verwenden Sie für jede Benachrichtigung eine eindeutige Benachrichtigungs-ID. Da Sie die Konstante "NOTIFICATION_ID" verwenden, überschreiben neue Benachrichtigungen die vorhandenen Benachrichtigungen.

+0

Vielen Dank. Perfekt. –