Przyjrzałem się wszystkim innym, niedziałającym, pytaniom, które nie działają w AUTO-CANCEL, i wszystkie one wydają się zawierać błędy, których nie robię. Próbowałem zarównoAndroid: Używanie AUTO-CANCEL w powiadomieniu, gdy aplikacja działa w tle.
builder.setAutoCancel(true);
i
Notification notif = builder.build();
notif.flags |= Notification.FLAG_AUTO_CANCEL;
Ani dzieła.
Używam NotificationCompat, ponieważ mój minimalny API to 8. Oto mój pełny kod. W tym konkretnym powiadomieniu nie wzywam intencji, ponieważ nie potrzebuję niczego użytkownika.
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(getString(R.string.app_name) + ": my title");
builder.setContentText(message);
builder.setSmallIcon(R.drawable.notification_icon);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.prog_icon);
builder.setLargeIcon(bitmap);
builder.setAutoCancel(true); // dismiss notification on user click
NotificationManager notiManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notiManager.notify(MY_NOTI_MANAGER_ID, builder.build());
Powiadomienie wyświetla się idealnie. Możesz przesuwać palcem, aby go wyczyścić. Ale po prostu dotykając go nie odrzuca powiadomienia. Po prostu się zapala i zostaje.
Kilka możliwych różnic między moim kodem i innymi opublikowanymi tutaj: 1) Używam NotificationCompat (co nie powinno mieć znaczenia, ale słyszeliśmy, że wcześniej). 2) Ponieważ moje powiadomienie jest proste, nie załączam intencji.
Proszę dać mi znać, jeśli masz jakiekolwiek spostrzeżenia.
Edytuj: Moim celem jest odrzucenie powiadomienia bez uprzedniej prezentacji mojej aplikacji w tle.
To prawda ... – superUser
Rozwiązanie jest dobre, jednak uważam, że wyjaśnienie jest niedokładne. Nie "chwyta bieżącej aktywnej aplikacji jako oczekującej intencji", bardziej prawdopodobne, że wysyła puste intencje i zwija zasobnik powiadomień. Ponieważ zamiar po prostu nic nie robi, zdarza się, że powracamy na szczyt stosu działań. –
Tak działa jak mistrz .. Wielkie dzięki .. –