Alle Benachrichtigungen (auch andere App-Benachrichtigungen) können durch Abhören von 'NotificationListenerService' entfernt werden, wie in NotificationListenerService Implementation erwähnt
Im Service müssen Sie anrufen cancelAllNotifications()
.
Der Dienst muss für Ihre Anwendung über "Apps & Benachrichtigungen" -> "Spezieller App-Zugriff" -> "Benachrichtigungszugriff" aktiviert werden.
Zum Manifest hinzufügen:
<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>
Dann im Code;
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"));
}
Verwenden Sie danach den Rundfunkempfänger, um das Löschen aller auszulösen.
Gemäß dem obigen Code, um die Broadcast-Verwendung auszulösen;
getContext().sendBroadcast(new Intent("com.test.app"));