Ich erstelle gerade einen Vordergrund-Service mit einer Benachrichtigung, die in der Benachrichtigungsleiste angezeigt wird, wenn der Dienst gestartet wird. Wenn der Dienst beendet wird, wird die Benachrichtigung beendet. Meine Frage ist, gibt es eine Möglichkeit, den Dienst zu stoppen, wenn "alle Benachrichtigungen löschen" oder eine Kündigung der Benachrichtigung (Swipe) auftritt?Wie kann ich einen Vordergrunddienst ablehnen, indem ich die Benachrichtigung verwende (Wischen ablehnen) oder alle Benachrichtigungen lösche?
aktualisiert Umsetzung der Mitteilung enthalten:
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.d(CLASS, "onStartCommand service started.");
if (getString(R.string.service_start_action) == intent.getAction())
{
Intent intentForeground = new Intent(this, ServiceMain.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intentForeground, 0);
Notification notification;
Notification.Builder builder = new Notification.Builder(getApplicationContext())
.setSmallIcon(android.R.drawable.btn_star)
.setTicker("Service started...")
.setContentIntent(pendIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setOnlyAlertOnce(true)
.setOngoing(false);
notification = builder.build();
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
startForeground(SERV_NOTIFY, notification);
player.start();
}
else
{
Log.d(CLASS, "onStartCommand unable to identify acition.");
}
return START_STICKY;
}
Sehen Sie sich dieses Beispiel von Google an: https://github.com/googlesamples/android-ActiveNotifications. Es zeigt, wie Sie auf eine abgewiesene Benachrichtigung sowie auf eine ganze Gruppe von Benachrichtigungen warten. –
Soweit ich weiß, können Sie keinen Vordergrund-Service erstellen, ohne eine Benachrichtigung zu erstellen. Android erfordert dies, da sie nicht möchten, dass Sie Dienste hinter der Szene ausführen, ohne dass der Benutzer es bemerkt. Wenn Sie die Benachrichtigung entfernen, wenn Ihre Aktivität zerstört wurde und Ihr Dienst im Vordergrund ausgeführt wird, können Sie eine Benachrichtigung nicht einfach abbrechen. Das Abbrechen der Benachrichtigung kann nur durch Abbrechen des Vordergrunddienstes selbst über den Aufruf '.stopForeground (true)' erfolgen, der boolesche Parameter gibt an, ob Sie den Vordergrund zusammen mit der Benachrichtigung anhalten möchten. –