Как вы определяете, когда пользователь отключает сервис доступности в Android? - PullRequest
0 голосов
/ 02 мая 2018

Я разрабатываю сервис специальных возможностей в Android. Я хочу отключить некоторые функции, когда пользователь отключает службу специальных возможностей, но я не уверен, как я могу это обнаружить.

Я думал, что когда пользователь выключит его, он вызовет onDestroy(), но, видимо, он не вызывается.

Есть ли способ узнать, когда пользователь отключает службу доступности? Или есть функция, которая вызывается всякий раз, когда пользователь отключается?

(На всякий случай я разрабатываю для Android Wear.)

Большое спасибо !! Я ценю вашу помощь! :)

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

interface AccessibilityManager.AccessibilityStateChangeListener

Слушатель состояния доступности системы. Чтобы прослушать изменения состояния доступности на устройстве, внедрите этот интерфейс и зарегистрируйте его в системе, вызвав addAccessibilityStateChangeListener.

Пример:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    AccessibilityManager am = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
    am.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
        @Override
        public void onAccessibilityStateChanged(boolean b) {
            Log.d(TAG,"onAccessibilityStateChanged b=" + b);
            updateServiceStatus(b);
        }
    });
    updateServiceStatus(am.isEnabled());
}

Дополнительные примеры Java на programcreek.com .

0 голосов
/ 02 мая 2018

Я не знаю ни о каком событии, трансляции или обратном вызове, которые уведомляют приложения об изменениях состояния в Accessibility Service. Лучшее, что я могу придумать, - это периодически проверять статус службы вручную:

AccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
boolean isAccessibilityEnabled = am.isEnabled();

Документы: AccessibilityManager # isEnabled () .

...