Задать вопрос
@Chesterfield25

Как удалить все уведомления с помощью Accessibility?

Задача стоит в том что бы удалять все уведомления которые создает приложение с помощью Accessibility.
Приложение работает в фоновом режиме и создает уведомление
Notification notification = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            notification = new Notification.Builder(this, CHANNEL_ID)
                    .setContentTitle("Service is running")
                    .setContentText("App is performing background tasks")
                    .setSmallIcon(R.drawable.ic_service_icon)
                    .build();
        }

        startForeground(1, notification); // Запуск сервиса в переднем плане


Я пытаюсь удалить все уведомления, в логах мне показывает что уведомления удалены но но уведомление которое создает фоновый процесс продолжает отображаться на телефоне

@Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        // Получаем информацию о текущем окне
        AccessibilityNodeInfo nodeInfo = event.getSource();

        if (nodeInfo != null) {
            Log.i(TAG, "onAccessibilityEvent: найдено окно");
            Log.i(TAG,"ForeGround Accessibility");

            // Ищем кнопку "Разрешить" и нажимаем на нее
            performActionOnPermissionDialog(nodeInfo);

            // Вызывайте метод для удаления уведомлений
            if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
                Log.i(TAG, "Удаляем уведомления, так как изменилось состояние окна");
                removeNotifications();
            }
        }
    }


private void removeNotifications() {
        // Получаем NotificationManager
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (notificationManager != null) {
            // Удаляем уведомления по ID. Например, если ваш ForegroundService использует ID 1:
            notificationManager.cancelAll();
            Log.i(TAG, "Уведомление с ID 1 удалено");
        } else {
            Log.w(TAG, "Не удалось получить NotificationManager");
        }
    }
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
Удали приложение, которое спамит.
Так как если запретить/удалять эти уведомления "приложение выполняет фоновую работу", оно од ин фиг не сможет работать корректно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы