Усі сповіщення (навіть інші сповіщення додатків) можна видалити, прослуховуючи 'NotificationListenerService', як зазначено у реалізації NotificationListenerService
У службі вам доведеться зателефонувати cancelAllNotifications()
.
Послугу потрібно ввімкнути для вашої програми через "Додатки та сповіщення" -> "Спеціальний доступ до програми" -> "Доступ до сповіщень".
Додати до маніфесту:
<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>
Потім у коді;
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"));
}
Після цього використовуйте широкомовний приймач, щоб запустити очищення всіх.
Відповідно до наведеного вище коду для ініціювання використання трансляції;
getContext().sendBroadcast(new Intent("com.test.app"));