Не удается получить событие TYPE_NOTIFICATION_STATE_CHANGED в Android 9.0 - PullRequest
0 голосов
/ 27 июня 2019

В устройствах Android 9.0 моя служба доступности подключилась, но не может получить событие TYPE_NOTIFICATION_STATE_CHANGED, может быть получено другое событие, такое как TYPE_WINDOW_CONTENT_CHANGED.

В противном случае его можно получить на устройствах Android 8.0.

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"

    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:packageNames="com.tencent.mm"
    android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
@Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        Log.i(TAG, "received event: " + event);
        int eventType = event.getEventType();
        switch (eventType) {
            case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
                handleNotification(event);
                break;
            default:
        }
    }

1 Ответ

0 голосов
/ 01 июля 2019

Я решил вопрос.В Android 9.0 система Android имеет некоторые изменения в событии TYPE_NOTIFICATION_STATE_CHANGED (конкретные изменения неизвестны), поэтому событие не может быть получено.Решением этой проблемы является удаление android:packageNames="com.tencent.mm" в конфигурации специальных возможностей xml и фильтрация пакета в службе специальных возможностей.Таким образом, TYPE_NOTIFICATION_STATE_CHANGED можно получить в Android 9.0.Есть еще один способ решить эту проблему, используя NotificationListenerService вместо AccessibilityService в Android 9.0.

...