Как определить, когда служба специальных возможностей перестает работать?

#java #android

#java #Android

Вопрос:

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

Кто-то написал, что способ обнаружить сбой — это использовать UncaughtExceptionHandler и отключить службу специальных возможностей с помощью disableSelf() (работает только на> Android Nougat). Итак, я посмотрел, как реализовать неперехваченные исключения, и это то, что я сделал в своей службе специальных возможностей:

 @Override
protected void onServiceConnected() { 

    super.onServiceConnected();

    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {
            Toast.makeText(getApplicationContext(), "Accessibility Service Crashed", Toast.LENGTH_LONG).show();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                disableSelf();
            }
        }
    });

    AccessibilityServiceInfo configuration = new AccessibilityServiceInfo(); 
    configuration.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
    configuration.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    configuration.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
    setServiceInfo(configuration);
}
 

Сбой не обнаружен. Чего мне не хватает?