我已经创建了一个应用程序和一个事件,我设法添加通知在 android 通知栏。现在我需要示例如何从事件的通知栏中删除该通知? ? ?
使用“ Go To Find Combo Box”和“ >”命令。 CTRL + /或 CTRL + D是标准的热键。
这很简单。您必须在 NotificationManager 上调用 cancel或 cancelAll。取消方法的参数是应该取消的通知的 ID。
cancel
cancelAll
参见 API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
您可以尝试这个快速代码
public static void cancelNotification(Context ctx, int notifyId) { String ns = Context.NOTIFICATION_SERVICE; NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns); nMgr.cancel(notifyId); }
例如,转到组合框(CTRL + /)并键入: >of MyClassName。当你输入时,智能感知将改进下拉列表中的选项。
>of MyClassName
使用 NotificationManager 取消通知。您只需提供通知 ID
根据我的经验,这比 导航到更快,而且不会产生另一个对话来处理。此外,这个组合框还有许多其他漂亮的小快捷命令:
取消(您的 _ 通知 _ ID) ;
使用“查找”组合框
也检查这个链接 参见开发者链接
您还可以在通知管理器上调用 cancelAll,因此您甚至不必担心通知 ID。
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notifManager.cancelAll();
编辑: 我投了反对票,所以也许我应该指定,这将只删除通知从您的应用程序。
在 VisualStudio 代码中,默认的快捷方式是 Ctrl + P。
简单地设置 setAutoCancel (True) ,如下面的代码所示:
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());`
如果要生成在 前景中启动的 来自服务的通知,请使用
startForeground(NOTIFICATION_ID, notificationBuilder.build());
然后发出
notificationManager.cancel(NOTIFICATION_ID);
取消通知和通知仍然出现在状态栏中。在这个特殊的例子中,你将用两种方法来解决这些问题:
1 > 使用 stop Foreground (false)内部服务:
stopForeground( false ); notificationManager.cancel(NOTIFICATION_ID);
用调用活动破坏该服务类:
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);
第二种方式更喜欢在 音乐播放器通知,因为他们的方式不仅通知删除,但删除播放器也... ! !
这将有所帮助:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNotificationManager.cancelAll();
这应该可以删除应用程序发出的所有通知
如果通过调用
startForeground();
在一个服务中。您可能需要调用
stopForeground(false);
首先,然后取消通知。
在 Android API > = 23上,您可以执行类似的操作来删除一组通知。
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) { if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) { mNotificationManager.cancel(statusBarNotification.getId()); } }
下面是来自 Android 文档的例子:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "my_channel_01"; mNotificationManager.deleteNotificationChannel(id);
Visual Studio 2017中的 Ctrl + T。
请试试这个,
public void removeNotification(Context context, int notificationId) { NotificationManager nMgr = (NotificationManager) context.getApplicationContext() .getSystemService(Context.NOTIFICATION_SERVICE); nMgr.cancel(notificationId); }
只要打电话给 ID:
public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
Try: ctrl + P 尝试: ctrl + P
如果上面的键快捷方式不起作用,对象浏览器应该在视图菜单的某个地方有一个不同的快捷方式。如果所有这些都失败了,在 Tools-> Options-> Environment-> Keyboard-> “ Show command 包含”下搜索“ ObjectBrowser”。
它会帮助你的
private var notificationManager = NotificationManagerCompat.from(this) notificationManager.cancel("your_notification_id")
类型:@
如果像这样开始通知前景
startForeground("your_notification_id",notification.build())
后面跟着要搜索的类、方法或变量的名称。
那么你也应该停止前台服务
notificationManager.cancel("your_notification_id") stopForeground(true)