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?
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)
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);
}
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.
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());`
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í ... !!
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í.
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
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);
Zkuste to prosím,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Stačí zavolat ID:
public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}