it-swarm-vi.tech

Làm cách nào để xóa thông báo khỏi thanh thông báo theo chương trình trong Android?

Bất cứ ai cũng có ý tưởng làm thế nào chúng ta có thể xóa thông báo khỏi ứng dụng theo chương trình được gọi là sử dụng mục đích chờ xử lý.

Tôi đã sử dụng để hủy thông báo bằng phương pháp sau.

AlarmManager am=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(Display.this, TwoAlarmService.class);
PendingIntent pi = PendingIntent.getBroadcast(Display.this, AlarmNumber, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.cancel(pi);

Nhưng vấn đề là thông báo đã bắn mà không bị xóa khỏi thanh thông báo.

Cảm ơn trước...

enter image description here

52
Jayesh Sojitra

Có thể thử điều này: 

NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);

HOẶC, bạn cũng có thể làm điều này để hủy tất cả các thông báo trong ngữ cảnh cụ thể:

notificationManager.cancelAll();

Xem liên kết này đến tài liệu: NotificationManager

155
An-droid

Thông báo vẫn hiển thị cho đến khi một trong những điều sau đây xảy ra:

Người dùng bỏ qua thông báo riêng lẻ hoặc bằng cách sử dụng "Xóa tất cả" (nếu thông báo có thể bị xóa) . Người dùng nhấp vào thông báo và bạn đã gọi setAuto Hủy () khi bạn tạo thông báo . Bạn gọi hủy () cho một ID thông báo cụ thể. Phương pháp này cũng xóa các thông báo đang diễn ra . Bạn gọi hủy ALL (), loại bỏ tất cả các thông báo bạn đã phát hành trước đó . Nếu bạn đặt thời gian chờ khi tạo thông báo bằng setTimeoutAfter (), hệ thống sẽ hủy thông báo sau thời gian trôi qua quy định. Nếu được yêu cầu, bạn có thể hủy thông báo trước khi hết thời gian chờ đã chỉ định

public void cancelNotification() {

    String ns = NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) getActivity().getApplicationContext().getSystemService(ns);
    nMgr.cancel(NOTIFICATION_ID);
}
1
Faxriddin Abdullayev

Tất cả các thông báo (ngay cả các thông báo ứng dụng khác) có thể được xóa bằng cách nghe 'NotificationListenerService' như được đề cập trong Thực hiện NotificationListenerService

Trong dịch vụ, bạn phải gọi cancelAllNotifications().

Dịch vụ phải được kích hoạt cho ứng dụng của bạn thông qua ‘Ứng dụng và thông báo, - - Truy cập ứng dụng đặc biệt, -> Thông báo truy cập vào hồi giáo.

Thêm vào bảng kê khai:

    <activity Android:name=".MainActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service Android:label="Test App" Android:name="com.test.NotificationListenerEx" Android:permission="Android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
        <intent-filter>
            <action Android:name="Android.service.notification.NotificationListenerService" />
        </intent-filter>
    </service>

Sau đó trong mã;

public class NotificationListenerEx extends NotificationListenerService {


public BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        NotificationListenerEx.this.cancelAllNotifications();
    }
};


@Override
public void onNotificationPosted(StatusBarNotification sbn) {
    super.onNotificationPosted(sbn);
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
    super.onNotificationRemoved(sbn);
}

@Override
public IBinder onBind(Intent intent) {
    return super.onBind(intent);
}

@Override
public void onDestroy() {
    unregisterReceiver(broadcastReceiver);
    super.onDestroy();
}

@Override
public void onCreate() {
    super.onCreate();
    registerReceiver(broadcastReceiver, new IntentFilter("com.test.app"));
}

Sau đó sử dụng máy thu phát sóng để kích hoạt xóa tất cả.

0
Samantha