Dies ist die Methode, die ich abrufen,/create/Benachrichtigung des Update-App in einer Serviceklasse, genannt PlayerService:Android appcompat v7 Unterstützung Bibliothek Mitteilung kompakte Ansicht Wiederholung Tasten Ausgabe
import android.support.v7.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationManager;
// ...
private Notification getCompatNotification(String contentText) {
m_notificationBuilder
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("PlayerService")
.setContentText(contentText)
.setContentIntent(null)
.setWhen(0)
.setShowWhen(false)
.addAction(android.R.drawable.ic_media_previous, "", null)
.addAction((isPlaying() ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play), "", null)
.addAction(android.R.drawable.ic_media_next, "", null)
.setStyle(new NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0, 1, 2)
.setShowCancelButton(true)
.setCancelButtonIntent(null))
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_MAX);
Notification notification = m_notificationBuilder.build();
return notification;
}
Wenn nun die Media-Player-Aktivität geöffnet, aber die Wiedergabe wurde nicht gestartet, die Benachrichtigung zeigt ihre große Ansicht mit diesen 3 Aktionstasten (vorher, Wiedergabe/Pause, nächste), aber wenn die Wiedergabe gestartet wird, wechselt die Benachrichtigungsansicht zu kompakt und zeigt diese 3 Tasten an erster Stelle und dann wieder an der erste und der zweite. Bitte sehen Sie sich die Bilder an.
Testgerät hat KitKat 4.4.4.
Nein Wiedergabe
Wiedergabe gestartet
Benachrichtigung zu aktualisieren:
private void updateNotification(String contentText){
nm.notify(NOTIFICATION_ID, getCompatNotification(contentText));
}
Und in onCreate()
:
@Override
public void onCreate() {
super.onCreate();
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
m_notificationBuilder = new NotificationCompat.Builder(this);
}
In onStartCommand()
:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startForeground(NOTIFICATION_ID, getCompatNotification("Test Content"));
return START_STICKY; // run until explicitly stopped.
}
herauszufinden Kann nicht, was das Problem ist. Jede Hilfe wird sehr geschätzt.
Ihre Antwort ist ein sehr guter Punkt, aber es gibt keine Methode wie ClearActions() für NotificationCompat.Builder. Abgesehen davon, kann ich nicht verstehen, warum ist das nirgends angegeben? Ist es nicht empfehlenswert, das gleiche Builder-Objekt für Erstellungs-/Aktualisierungsvorgänge zu verwenden? –
Ok, es sieht so aus, als ob eine Anfrage zum Hinzufügen dieser Methoden (clearActions und removeAction) vorliegt - [Problem 207040]: (https://code.google.com/p/android/issues/detail?id=207040). Für den Moment kann ich 'm_notificationBuilder.mActions.clear();' @mariusc vielen Dank! –