引用setServiceInfo的文檔 「您可以隨時調用此方法,但在系統綁定到此服務並且此方法爲之後稱之爲「。AccessibilityService 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"
/>
所以,問題是如何添加/刪除軟件包的輔助服務,內視我後來收到的可訪問性事件?
也許我不是很清楚,當我說「排除」。讓我解釋。最初我想接收兩個包「packageA」和「packageB」的事件,我使用setServiceInfo在onServiceConnected中設置。稍後在收到某個事件後,我想「排除」packageB,並只想要packageA中的事件。現在我修改packageNames數組,只包含packageA並再次調用setServiceInfo,但我仍然收到來自packageB.的事件。我目前使用的是你建議的方式,但我想了解爲什麼即使打擾從packageB接收事件並返回,如果我可以取消訂閱PackageB 。 –
編輯該問題以避免含糊不清。 –
你會遇到所有這些麻煩,從你的代碼中刪除一個「if」語句?所以,你提供的代碼沒有任何問題。這一切都應該假設工作,所以在你的代碼或Android中有一個錯誤。我有興趣看到你通過評論而省略的代碼,並且在初始化初始化服務信息時揮手致意。也就是說,這絕對是該API的非標準使用,所以不要打折你可能在Android中發現錯誤的事實。 – ChrisCM