【发布时间】:2017-10-14 19:05:05
【问题描述】:
引用 setServiceInfo 的文档 "您可以随时调用此方法,但系统绑定此服务后以及之后调用此方法时会提取信息。"
我的应用已启用辅助功能,我已在 onServiceConnected 方法中设置 serviceInfo,我正在接收这些应用的事件,一切都很好。
现在,问题是我正在尝试通过在 onServiceConnected 方法之外调用 setServiceInfo 来修改包列表,但更改没有生效(即我仍在接收来自前面指定的包列表中的包的事件修改后的包列表中不存在)。
@Override
protected void onServiceConnected() {
AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
accessibilityServiceInfo.packageNames = new String[]{"packageA","packageB"};
accessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED | AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
| AccessibilityEvent.TYPE_VIEW_SCROLLED | AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
| AccessibilityEvent.TYPE_VIEW_FOCUSED | AccessibilityEvent.TYPE_VIEW_SELECTED
| AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
accessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
accessibilityServiceInfo.notificationTimeout = 100;
accessibilityServiceInfo.flags = (AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS | accessibilityServiceInfo.flags);
setServiceInfo(accessibilityServiceInfo);
}
@Override
public void onAccessibilityEvent(final AccessibilityEvent event) {
AccessibilityServiceInfo serviceInfo = getServiceInfo();
serviceInfo.packageNames = new String[]{"packageA"};
setServiceInfo(serviceInfo);
}
accessibility_service_config.xml
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_service_description"
/>
所以,问题是如何根据我稍后收到的辅助功能事件在辅助功能服务中添加/删除包?
【问题讨论】:
标签: android accessibility accessibilityservice