Ho creato un'applicazione e con un evento riesco ad aggiungere notifiche nella barra delle notifiche di Android. Ora ho bisogno di esempio come rimuovere quella notifica dalla barra di notifica su un evento ??
Ho creato un'applicazione e con un evento riesco ad aggiungere notifiche nella barra delle notifiche di Android. Ora ho bisogno di esempio come rimuovere quella notifica dalla barra di notifica su un evento ??
Risposte:
Questo è abbastanza semplice Devi chiamare cancel
o cancelAll
sul tuo NotificationManager. Il parametro del metodo di annullamento è l'ID della notifica che deve essere annullata.
Vedi l'API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Puoi provare questo codice rapido
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Puoi anche chiamare cancelAll
il gestore delle notifiche, quindi non devi nemmeno preoccuparti degli ID di notifica.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDIT: sono stato sottoposto a downgrade, quindi forse dovrei specificare che questo rimuoverà solo la notifica dalla tua applicazione.
startForeground(NOTIFICATION_ID, mNotification);
imposta semplicemente setAutoCancel (True) come il seguente codice:
Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
GameLevelsActivity.this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
getApplicationContext()).setSmallIcon(R.drawable.icon)
.setContentTitle(adv_title)
.setContentText(adv_desc)
.setContentIntent(resultPendingIntent)
//HERE IS WHAT YOY NEED:
.setAutoCancel(true);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`
questo aiuterà:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
questo dovrebbe rimuovere tutte le notifiche fatte dall'app
e se si crea una notifica chiamando
startForeground();
all'interno di un servizio potrebbe essere necessario chiamare
stopForeground(false);
prima di tutto, quindi annulla la notifica.
Se si sta generando una notifica da un servizio avviato in primo piano utilizzando
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Quindi emissione
notificationManager.cancel(NOTIFICATION_ID);
non funziona annullando la notifica e la notifica appare ancora nella barra di stato. In questo caso particolare, li risolverai in 2 modi:
1> Utilizzo del servizio di stopForeground (false) all'interno:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Distruggi quella classe di servizio con l'attività chiamante:
Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
ServiceCallingActivity.activity.finish();
}
context.stopService(i);
Il secondo modo preferisce di più nella notifica del lettore musicale perché in questo modo non solo la notifica rimuove ma rimuove anche il lettore ... !!
stopForeground(true); manager.cancelAll();
è ciò che ha risolto per me!
Per favore prova questo,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Utilizzare NotificationManager per annullare la notifica. Devi solo fornire il tuo ID di notifica
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
controlla anche questo link Vedi Link per gli sviluppatori
NotificationManager.cancel(id)
è la risposta corretta. Tuttavia puoi rimuovere in Android Oreo e le notifiche successive eliminando l'intero canale di notifica. Questo dovrebbe eliminare tutti i messaggi nel canale eliminato.
Ecco l'esempio dalla documentazione di Android :
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
Sull'API Android> = 23 puoi fare qualcosa del genere per rimuovere un gruppo di notifiche.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}