Tôi đã tạo một ứng dụng và với một sự kiện tôi quản lý để thêm thông báo trên thanh thông báo Android. Bây giờ tôi cần mẫu làm thế nào để loại bỏ thông báo đó khỏi thanh thông báo về một sự kiện ??
Tôi đã tạo một ứng dụng và với một sự kiện tôi quản lý để thêm thông báo trên thanh thông báo Android. Bây giờ tôi cần mẫu làm thế nào để loại bỏ thông báo đó khỏi thanh thông báo về một sự kiện ??
Câu trả lời:
Điều này khá đơn giản. Bạn phải gọi cancel
hoặc cancelAll
trên Thông báo của bạn. Tham số của phương thức hủy là ID của thông báo sẽ bị hủy.
Xem API: http://developer.android.com/reference/android/app/NotificationManager.html#cattery(int)
Bạn có thể thử mã nhanh này
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Bạn cũng có thể gọi cancelAll
trình quản lý thông báo, do đó bạn thậm chí không phải lo lắng về id thông báo.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDIT: Tôi đã bị hạ cấp vì vậy có lẽ tôi nên xác định rằng điều này sẽ chỉ xóa thông báo khỏi ứng dụng của bạn.
startForeground(NOTIFICATION_ID, mNotification);
chỉ cần đặt setAuto Hủy (Đúng) như đoạn mã sau:
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());`
điều này sẽ giúp:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
điều này sẽ xóa tất cả các thông báo được thực hiện bởi ứng dụng
và nếu bạn tạo một thông báo bằng cách gọi
startForeground();
bên trong một Dịch vụ. Bạn có thể phải gọi
stopForeground(false);
đầu tiên, sau đó hủy thông báo.
Nếu bạn đang tạo Thông báo từ một Dịch vụ được bắt đầu ở nền trước bằng cách sử dụng
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Sau đó ban hành
notificationManager.cancel(NOTIFICATION_ID);
không hoạt động hủy Thông báo & thông báo vẫn xuất hiện trên thanh trạng thái. Trong trường hợp cụ thể này, bạn sẽ giải quyết những điều này bằng 2 cách:
1> Sử dụng stopForeground (false) bên trong dịch vụ:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Phá hủy lớp dịch vụ đó bằng hoạt động gọi:
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);
Cách thứ hai thích trong thông báo trình phát nhạc hơn vì cách thay thế không chỉ thông báo xóa mà còn xóa trình phát ... !!
stopForeground(true); manager.cancelAll();
là những gì giải quyết nó cho tôi!
Hãy thử nó
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Sử dụng Trình thông báo để hủy thông báo của bạn. Bạn chỉ cần cung cấp id thông báo của bạn
mNotificationManager.celon (Your_NOTIFICATION_ID);
đồng thời kiểm tra liên kết này Xem Liên kết nhà phát triển
NotificationManager.cancel(id)
là câu trả lời đúng Tuy nhiên, bạn có thể xóa trong Android Oreo và các thông báo mới hơn bằng cách xóa toàn bộ kênh thông báo. Điều này sẽ xóa tất cả các tin nhắn trong kênh bị xóa.
Dưới đây là ví dụ từ tài liệu Android :
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
Trên API Android> = 23, bạn có thể thực hiện một số thao tác như thế này để xóa một nhóm thông báo.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}