java—如何检测辅助功能服务何时停止工作?

3phpmpom  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(228)

通常情况下,当辅助功能服务停止工作时,没有办法检测到这一点,因为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);
}

它没有发现坠机。我错过了什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题