首页 > 解决方案 > 启用无障碍服务后,无障碍事件仅发生一次

问题描述

我刚刚开始编写使用辅助功能服务的应用程序。我会详细解释我的问题。

下面是我上课的onServiceConnected方法MyAccessibilityService

protected void onServiceConnected() {
    super.onServiceConnected();
    AccessibilityServiceInfo info = getServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.WINDOWS_CHANGE_ADDED;

    info.packageNames = new String[]
            {THIRD_PARTY_APP_PACKAGE};

    info.notificationTimeout = 100;
    this.setServiceInfo(info);
}

该应用程序正在检测onAccessibilityEvent()方法中的事件

public void onAccessibilityEvent(AccessibilityEvent event) {
    AccessibilityNodeInfo source = event.getSource();
    if (source == null) {
        return;
    }

    Toast.makeText(this, "Event Occured", Toast.LENGTH_SHORT).show();
}

现在,当我打开第三方应用程序时,我得到了 Toast “事件发生”。现在我关闭了应用程序,当我再次打开它时,没有调用该方法,也没有得到任何 Toast。为了让它再次工作,我必须在我的手机设置中禁用我的应用程序的无障碍服务,然后再次启用它。

我知道我遗漏了一些东西,我唯一的问题是代码的附加部分应该是什么,或者我需要进行哪些修改才能在每次打开第三方应用程序时检测到事件?

标签: androidaccessibilityaccessibilityserviceandroid-accessibility

解决方案


您是否尝试过摆脱通知超时?您可能不需要它,它也不是经过最佳测试的 API。


推荐阅读