Фон:
У меня есть класс, который расширяется от 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)
.Хотя служба специальных возможностей этого приложения включена, но она все равно не показывает имя приложения при изменении окна.
Может быть, это не сработает, если приложение вернется из спящего режима?Мне пришлось переустановить приложение поверх моей отладочной сборки, а затем снова оно заработало, но надолго.
Вопрос: Как я могу убедиться, что всегда вернуть мне имя приложения при изменении окна?