#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);
}
Сбой не обнаружен. Чего мне не хватает?