it-swarm-eu.dev

Android: odstranění oznámení z oznamovací lišty

Vytvořil (a) jsem aplikaci a pomocí události, které se mi podařilo přidat, oznámení v panelu oznámení Android. Nyní potřebuji vzorek, jak odstranit oznámení z oznamovací lišty na události? 

143
Nezir

To je docela jednoduché. Musíte zavolat cancel nebo cancelAll na vašem NotificationManageru. Parametrem metody zrušení je ID oznámení, které má být zrušeno.

Viz API: http://developer.Android.com/reference/Android/app/NotificationManager.html#cancel(int)

158

Můžete zkusit tento rychlý kód

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

Můžete také zavolat cancelAll na správce oznámení, takže se nemusíte ani starat o ID oznámení.

NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();

EDIT: Byl jsem downvoted, takže možná bych měl upřesnit, že to bude jen odstranit oznámení z vaší aplikace.

58
Stephane Mathis

jednoduše nastavte setAutoCancel (True) jako následující kód:

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());`
10
farhad.kargaran

Pokud generujete Oznámení ze služby, která je spuštěna v popředí pomocí

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Pak vydává

notificationManager.cancel(NOTIFICATION_ID);

nefunguje zrušení oznámení a oznámení se stále zobrazuje ve stavovém řádku. V tomto konkrétním případě tyto problémy vyřešíte dvěma způsoby:

1> Použití služby stopForeground (false) uvnitř služby:

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

2> Zničit tuto třídu služeb pomocí aktivity volání: 

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

Druhý způsob dává přednost tomu, že notifikace hudebního přehrávače více, protože způsob, jakým nejen oznamování odstraní, ale i hráče odstraní ... !!

6
Dhruv Raval

to pomůže:

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

to by mělo odstranit všechna oznámení provedená aplikací

a pokud vytvoříte oznámení voláním

startForeground();

uvnitř služby. možná budete muset zavolat 

stopForeground(false);

Nejprve zrušte oznámení.

5
pilotmario

Oznámení zrušíte pomocí nástroje NotificationManager. Musíte pouze uvést své ID oznámení

mNotificationManager.cancel (YOUR_NOTIFICATION_ID);

také zkontrolujte tento odkaz Viz odkaz pro vývojáře

1

NotificationManager.cancel(id) je správná odpověď. V aplikaci Android Oreo a pozdějších oznámeních však můžete odstranit celý kanál oznámení. To by mělo odstranit všechny zprávy v odstraněném kanálu.

Zde je příklad z dokumentace k systému Android :

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

Zkuste to prosím,

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}
1
Akansha patel

Stačí zavolat ID:

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