Служба доступности Android перестала работать через день или два на Oreo - PullRequest
0 голосов
/ 12 июня 2018

Фон:

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

Может быть, это не сработает, если приложение вернется из спящего режима?Мне пришлось переустановить приложение поверх моей отладочной сборки, а затем снова оно заработало, но надолго.

Вопрос: Как я могу убедиться, что всегда вернуть мне имя приложения при изменении окна?

1 Ответ

0 голосов
/ 29 июля 2018

Просто перезапустите приложение.Это связано с тем, что Службой специальных возможностей управляет ОС Android, поэтому, если какая-либо вещь вызовет сбой вашей службы, она будет убита и перенесена для запуска в какое-то время в будущем, которым вы не сможете управлять.Так что, возможно, ваш сервис был убит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...