2017-01-13 5 views
2

Ich würde, dass die Benachrichtigung nicht nach ein paar Sekunden verschwindet. So habe ich die Meldung wie folgt erstellen:Android Heads-up Benachrichtigung verschwindet nach ein paar Sekunden

NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 
     builder.setSmallIcon(R.drawable.cast_ic_notification_small_icon) 
       .setDefaults(Notification.FLAG_ONGOING_EVENT) 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setContentTitle(notificationDetails.getSubject()) 
       .setContentText(notificationDetails.getMessage()) 
       .setColor(context.getResources().getColor(R.color.colorPrimary)) 
       .setOngoing(true); 

und Einstellen der FLAG_ONGOING_EVENT und die Methode setOngoing (true).

aber nach ein paar Sekunden verschwindet die Benachrichtigung weiter. Ich möchte, dass die Benachrichtigung nur verschwindet, wenn der Benutzer auf klickt. Danke.

+3

AFAIK, das ist nicht möglich. – CommonsWare

Antwort

2

Die Dauer der Heads-Up-Benachrichtigung kann nicht geändert werden. Sie ist auf Betriebssystemebene festgelegt. Abhängig vom Betriebssystem, wie viel Zeit dafür zur Verfügung steht.

1

Die Dauer kann nicht geändert werden. Andernfalls würde es mit anderen Heads-Up-Benachrichtigungen, die in der Warteschlange angezeigt werden, in Verbindung treten.

1

Es ist tatsächlich möglich, eine Heads-up-Benachrichtigung persistent zu machen. Der Trick besteht darin, setFullScreenIntent zu verwenden. Wenn Sie möchten, dass Ihre Anmeldung nicht eine Vollbild-Version haben, können Sie eine Dummy-Absicht verwenden, die jede Tätigkeit tatsächlich nicht starten, wie folgt aus:

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); 
notificationBuilder.setFullScreenIntent(pendingIntent, true); 

Es ist ein Hack, aber das Verhalten macht einige Sinn. Wenn eine App versucht, eine Vollbildbenachrichtigung anzuzeigen, muss dies ein wichtiges Ereignis sein, z. B. ein Alarm oder ein Telefonanruf. Wenn das Telefon entscheidet, die Vollbildbenachrichtigung nicht anzuzeigen, sollte es wahrscheinlich weiterhin etwas persistent zeigen, bis der Benutzer Maßnahmen ergreift.

Dies funktioniert auf den Telefonen, die ich getestet habe, aber das Verhalten ist nicht dokumentiert, so dass es keine Garantien gibt.

Verwandte Themen