关闭 Android 推送通知
Posted
技术标签:
【中文标题】关闭 Android 推送通知【英文标题】:Dismiss Android push Notifications 【发布时间】:2014-02-11 07:24:08 【问题描述】:关于推送通知的一些问题。当我按下其中一个通知时,如何消除我的应用程序的所有通知?另外...如果我启动应用程序(而不是从通知),我如何解除通知?
这是我从 GcmIntentService 类发送通知的方式(如果有用的话)。
private void sendNotification(Bundle extras)
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
NOTIFICATION_ID = Integer.parseInt(extras.getString("id"));
Intent in = new Intent(this, PushActivity.class);
in.putExtras(extras);
in.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
String msg = extras.getString("msj");
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
in, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("MY TITLE")
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(msg))
.setContentText(msg);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
【问题讨论】:
试试mBuilder.cancelAll()
mBuiler 不允许我这样做 .cancelAll();有什么想法吗?
为什么?去官方docs
好的,所以这接受 cancelAll(): mNotificationManager.cancelAll();但是我应该在哪里称呼它呢?
【参考方案1】:
我不确定您发出的通知是否针对同一事件,如果是这样,您可以像 Gmail 在收到第二或第三封电子邮件时那样执行所谓的“堆叠通知”。这一切都在一个通知中,因此将作为一个通知消失。这仅兼容 4.1 以上。
这是 Google 与堆栈一起提供的代码。这有什么帮助吗?
mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
mNotifyBuilder = new NotificationCompat.Builder(this)
.setContentTitle("New Message")
.setContentText("You've received new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;
// Start of a loop that processes data and then notifies the user
...
mNotifyBuilder.setContentText(currentText)
.setNumber(++numMessages);
// Because the ID remains unchanged, the existing notification is
// updated.
mNotificationManager.notify(
notifyID,
mNotifyBuilder.build());
【讨论】:
我不需要将所有的 otification 显示为一个。使用 .setAutoCancel(true) 可以很容易地忽略该通知。知道如何解雇所有这些人吗?当我启动应用程序时,如何将它们全部关闭? 好的,所以我看了一下,这不是一个坏主意。问题是它只兼容4.1以上=( 好吧有 CancelAll() 将取消所有以前的通知。这可以在单击通知时调用,然后您也可以在启动程序时添加它。这是有关管理通知的更多信息的链接。 link【参考方案2】:试试android.app.NotificationManager.cancelAll()
【讨论】:
以上是关于关闭 Android 推送通知的主要内容,如果未能解决你的问题,请参考以下文章
Android推送通知权限判断及跳转到权限设置界面(完善兼容8.0)