通常情况下,当辅助功能服务停止工作时,没有办法检测到这一点,因为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);
}
它没有发现坠机。我错过了什么?
暂无答案!
目前还没有任何答案,快来回答吧!