在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:
}
}
答案 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,可以解决此问题。