2017-02-08 2 views
-1

schaffe ich nicht einen Weg finden, können eine „laufende“ Benachrichtigung zu schaffen - ich bin eigentlich nicht sicher, ob diese Art der Benachrichtigung auch so genannt wird - wie auf dem Foto unten:eine „laufende“ Benachrichtigung android

Grey Notification Messenger

Wie konnte ich das mit meiner Benachrichtigung (Pinger) erreichen? Meine Benachrichtigung wurde für einen Vordergrund-Service erstellt, daher weiß ich nicht, ob das, was ich möchte, möglich ist.

Danke für Ihre Hilfe.

Edit: Die Antworten, die Sie finden können herre (Android: How to create an "Ongoing" notification?) hat mein Problem nicht gelöst. Diese Frage ist kein Duplikat.

Mein Code:

Intent showTaskIntent = new Intent(getApplicationContext(), BackingService.class); 
    showTaskIntent.setAction(Intent.ACTION_MAIN); 
    showTaskIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    showTaskIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    Intent detailsIntent = new Intent(BackingService.this, DetailsActivity.class); 
    detailsIntent.putExtra("EXTRA_DETAILS_ID", 42); 
    PendingIntent contentIntent = PendingIntent.getActivity(
      getApplicationContext(), 
      0, 
      showTaskIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
    PendingIntent replyPendingIntent = null; 
    if (Build.VERSION.SDK_INT < 24) { 
     replyPendingIntent = contentIntent; 
    } else { 
     replyPendingIntent = PendingIntent.getBroadcast(
       BackingService.this, 
       0, 
       new Intent(BackingService.this, FromNotifSender.class), 
       PendingIntent.FLAG_UPDATE_CURRENT 
     ); 
    } 
    RemoteInput remoteInput = new RemoteInput.Builder(KEY_NOTIFICATION_REPLY) 
      .setLabel("Tapez votre message ici") 
      .build(); 
    android.support.v4.app.NotificationCompat.Action replyAction = new android.support.v4.app.NotificationCompat.Action.Builder(
      0, "Envoyer à "+usernamefriend, replyPendingIntent) 
      .addRemoteInput(remoteInput) 
      .build(); 
    android.support.v4.app.NotificationCompat.Builder miBuilder = new NotificationCompat.Builder(BackingService.this) 
      .setSmallIcon(R.drawable.logo4) 
      .setContentTitle(getString(R.string.app_name)) 
      .setContentText(contentText) 
      .setWhen(System.currentTimeMillis()) 
      .setContentIntent(contentIntent) 
      .setAutoCancel(false) 
      .setOngoing(true) 
      .setColor(getResources().getColor(R.color.colorPrimaryDark)); 
    if (Build.VERSION.SDK_INT < 24) { 
    } else { 
     if(usernamefriend.equalsIgnoreCase("un ami")){ 

     }else{ 
      miBuilder.addAction(replyAction); 
     } 

    } 
    Intent resultIntent = new Intent(BackingService.this, SearchActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(BackingService.this); 
    stackBuilder.addParentStack(SearchActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = 
      stackBuilder.getPendingIntent(
        0, 
        PendingIntent.FLAG_UPDATE_CURRENT 
      ); 
    miBuilder.setContentIntent(resultPendingIntent); 
    startForeground(002, miBuilder.build()); 

Wie Sie sehen können, .setOngoing (true) funktioniert nicht für mich.

SOLUTION

Sie nur die Priorität Ihrer Mitteilung an Notification.PRIORITY_MIN wie im Code festgelegt haben folgende:

android.support.v4.app.NotificationCompat.Builder miBuilder = new NotificationCompat.Builder(BackingService.this) 
      .setSmallIcon(R.drawable.logo4) 
      .setContentTitle(getString(R.string.app_name)) 
      .setContentText(contentText) 
      .setWhen(System.currentTimeMillis()) 
      .setContentIntent(contentIntent) 
      .setAutoCancel(false) 
      .setOngoing(true) 
      .setColor(getResources().getColor(R.color.colorPrimaryDark)) 
      .setPriority(Notification.PRIORITY_MIN); 
+0

bitte stellen Sie sicher, einige Code auf Ihre Frage stellen Sie es nicht zu weit gefasst machen, empfehle ich Ihnen Hilfe Stackoverflow zu besuchen, um mehr über Fragen –

Antwort

0
public void showNotification() { 
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
NotificationManager nMN = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
Notification n = new Notification.Builder(this) 
.setContentTitle("Notification Title") 
.setContentText("Notification content") 
.setSmallIcon() //set your icon 
.setVibrate(new long[] { 1000, 1000 }) 
.setLights(Color.BLUE, 700, 500) 
.setSound(alarmSound) 
.setOngoing(true) 
//.setStyle(new NotificationCompat.BigTextStyle(NorProv)) 
.build(); 
nMN.notify(NOTIFICATION_ID, n); 
} 

UPDATE

zuordnen Notification.FLAG_ONGOING_EVENT Markieren Sie Ihre Benachrichtigung wie folgt:

notif.flags = Notification.FLAG_ONGOING_EVENT; 

UPDATE # 2

Dient Prioritäten Ihre Mitteilung einzustellen:

.setPriority(Notification.PRIORITY_LOW); 
//other priorities: MIN, HIGH, DEFAULT, MAX 

das Symbol auszublenden nur versuchen, die .setSmallIcon() zu entfernen und nur eine .setLargeIcon()

verwenden
+0

Die .setOngoing (true) hat mein Problem nicht lösen, Ich habe immer noch die gleiche Benachrichtigung –

+0

wird die Benachrichtigung entlassen, wenn Sie es wischen? –

+0

Überprüfen Sie die aktualisierte Antwort –

0

Hier ist was ich getan habe. Wenn Sie einen Vordergrunddienst ausführen, werden Sie gezwungen, eine permanente/fortlaufende Benachrichtigung zu erhalten. Wenn nicht, dann wird kein Vordergrunddienst ausgeführt. Der Trick ist der OnStartCommand() Override und StartSticky Befehl. Dies sollte in Ihrem Dienst sein. Verwenden Sie OnStartCommand anstelle von OnCreate. und stellen Sie sicher, StartForeground.

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // Let it continue running until it is stopped. 
    /* 
    Do Work 
    */ 

    Notification notification = new NotificationCompat.Builder(this) 
     .setSmallIcon(R.drawable.ic_image) 
     .setContentText("Display Text") 
     .setPriority(Notification.PRIORITY_LOW).build(); 

    startForeground(MyConstants.NOTIF_SERVICE, notification); 
    return START_STICKY; 
} 
+0

Es tut mir leid, ich bin ein Anfänger ... Könnten Sie mir sagen, was sind MyConstants und Empfänger? –

+0

Mein Dienst hielt einen Empfänger, um gegen etwas anzukämpfen, das ich nicht brauchte. Ich habe den Beitrag für Sie überarbeitet. MyConstants ist mein Singleton, der meine Konstanten enthält, da Benachrichtigungen eine Benachrichtigungs-ID benötigen. Sie können 'MyConstants.NOTIF_SERVICE 'durch irgendeine Zahl wie' 001' oder was auch immer ersetzen. Solange Sie Vordergrund und die verknüpfte Benachrichtigung dafür gestartet haben, sollte alles, was Sie in 'onStartCommand' gestartet haben, aktiv bleiben. Ich sage, sollte, weil ich nicht weiß, was Ihr Dienst tut. –

+0

Ich denke, eine bessere Frage wäre, was genau diese Benachrichtigung tun soll. –

Verwandte Themen