Предыстория:
У меня есть класс, который простирается от AccessibilityService
. Всякий раз, когда окно изменяется, вызывается следующая функция, которая дает мне имя приложения переднего плана.
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
}
Ниже приведена конфигурация, которую я установил:
@Override
protected void onServiceConnected() {
super.onServiceConnected();
//Configure these here for compatibility with API 13 and below.
AccessibilityServiceInfo config = new AccessibilityServiceInfo();
config.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
if (Build.VERSION.SDK_INT >= 16) { //Just in case this helps
config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
}
setServiceInfo(config);
}
AccessibilityService.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_explanation"
android:accessibilityEventTypes="typeWindowStateChanged|typeAllMask"
android:accessibilityFeedbackType="feedbackSpoken|feedbackHaptic|feedbackAudible|feedbackVisual|feedbackGeneric|feedbackAllMask"
android:notificationTimeout="100" android:canRetrieveWindowContent="true" />
Проблема. Некоторое время он работает нормально, но через день или два внезапно перестает работать. Он не вызывает функцию onAccessibilityEvent(AccessibilityEvent event)
. Хотя служба специальных возможностей этого приложения включена, но все равно не показывает имя приложения при изменении окна.
Может не работать, если приложение выходит из спящего режима? Пришлось переустановить приложение поверх моей отладочной сборки и потом опять заработало но как долго.
Вопрос: как сделать так, чтобы оно всегда возвращало мне имя приложения при изменении окна?