notifications personalizzare - Android: rimuovere la notifica dalla barra di notifica





stato notifiche (10)


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 sviluppatore

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 ??




questo aiuterà:

NotificationManager mNotificationManager = (NotificationManager)
            getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cannelAll();

e se si crea una notifica chiamando

startForeground();

all'interno di un servizio. Potrebbe essere necessario chiamare

stopForeground(false);

prima, quindi annullare la notifica.




Basta chiamare l'ID:

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}



Su Android API> = 23 puoi fare qualche cosa del genere per rimuovere un gruppo di notifiche.

  for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
        if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
            mNotificationManager.cancel(statusBarNotification.getId());
        }
    }



NotificationManager.cancel(id) è la risposta corretta. Tuttavia è possibile rimuovere in Android Oreo e notifiche successive eliminando l'intero canale di notifica. Questo dovrebbe cancellare tutti i messaggi nel canale eliminato.

Ecco l'esempio della documentazione di Android :

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);



Se si sta generando la notifica da un servizio che viene avviato in primo piano utilizzando

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Quindi emettere

notificationManager.cancel(NOTIFICATION_ID);

non funziona cancellando la notifica e la notifica appare ancora nella barra di stato. In questo caso specifico, risolverai questi in 2 modi:

1> Utilizzo di stopForeground (false) all'interno del servizio:

stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);

2> Distruggi la classe di servizio con l'attività di chiamata:

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 la notifica al music player in più perché in questo modo non solo rimuovi notifiche ma rimuovi anche player ... !!







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());`



Puoi provare questo codice veloce

public static void cancelNotification(Context ctx, int notifyId) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
    nMgr.cancel(notifyId);
}



Trova larghezza e altezza dello schermo:

width = getWindowManager().getDefaultDisplay().getWidth();
height = getWindowManager().getDefaultDisplay().getHeight();

Usando questo, possiamo ottenere l'ultimo e sopra l'SDK 13.

// New width and height
int version = android.os.Build.VERSION.SDK_INT;
Log.i("", " name == "+ version);
Display display = getWindowManager().getDefaultDisplay();
int width;
if (version >= 13) {
    Point size = new Point();
    display.getSize(size);
    width = size.x;
    Log.i("width", "if =>" +width);
}
else {
    width = display.getWidth();
    Log.i("width", "else =>" +width);
}




android notifications