AccessibilityService все onserviceconnected, но это не работает
Я делаю некоторую задачу с сервисом доступности. Все отлично работает, но мне нужно удалить конфигурацию моего xml и запустить службу из метода конфигурации onServiConnected, и вот здесь у меня проблема.
В журнале я вижу, что onServiceConnected работает, когда я включаю службу в своем телефоне, но она не работает с именем пакета, например, где я запускаю конфигурацию в access_xml_config.
Затем то, что я хочу сделать, - это иметь те же функциональные возможности, что и в access_xml_config, но в методе onServiceConnected.
Мой метод:
@Override
@SuppressLint("NewApi")
public void onServiceConnected() {
super.onServiceConnected();
Log.i(TAG, "onServiceConnected AccessibilityService");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.getCanRetrieveWindowContent();
info.notificationTimeout = 100;
info.feedbackType = AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS;
info.feedbackType = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
info.feedbackType = AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
info.packageNames = new String[]{"com.android.incallui"};
this.setServiceInfo(info);
}
манифест
<service android:name=".VsAccessibilityCallScreenService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name= "android.accessibilityservice.AccessibilityService" />
</intent-filter>
Это мой access_xml_config:
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:packageNames="com.android.incallui"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault|flagReportViewIds|flagIncludeNotImportantViews|flagRetrieveInteractiveWindows"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:description="@string/app_name"
/>
1 ответ
вы неправильно используете биты / целочисленные флаги:)
info.feedbackType = AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS; info.feedbackType = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS; info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; info.feedbackType = AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
каждая следующая строка заменяет предыдущую
поэтому для вашего случая это должно быть:
info.feedbackType =
AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS
| AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
| AccessibilityServiceInfo.FEEDBACK_GENERIC
| AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
коротко:
& - bitwise and
| - bitwise or
^ - bitwise xor
~ - bitwise not
<< - bitwise shift left
>> - bitwise shift right
хорошее начало:
Я нашел ответчик... используя getServiceInfo();
@Override
@SuppressLint("NewApi")
public void onServiceConnected() {
super.onServiceConnected();
Log.i(TAG, "onServiceConnected AccessibilityService");
accessibilityServiceInfo info;
clientconfig = VsClientConfig.getInstance();
info = getServiceInfo();
info.packageNames = new String[]{"your.package.name"};
setServiceInfo(info);
}