在Android 9.0中无法接收TYPE_NOTIFICATION_STATE_CHANGED事件

时间:2019-06-27 05:20:59

标签: android accessibilityservice

在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 :(得分:0)

我已经解决了这个问题。 在Android 9.0中,Android系统对TYPE_NOTIFICATION_STATE_CHANGED事件进行了一些修改(具体更改未知),因此无法接收该事件。解决方法是删除可访问性配置xml中的android:packageNames="com.tencent.mm",然后在可访问性服务中过滤软件包。这样,可以在Android 9.0中接收TYPE_NOTIFICATION_STATE_CHANGED。 通过使用NotificationListenerService代替Android 9.0中的AccessibilityService,可以解决此问题。