В моем приложении есть Service
и AccessibilityService
. Теперь Service
привязан к Службе специальных возможностей для получения информации.
Мой Service
периодически проверяет, включен ли AccessibilityService
, и если нет, отправляет пользователю уведомление о том, что он должен его включить.
После включения AccessibilityService
начинает работать. Сначала привязывается к моему Service
, а уже после начинает слать информацию.
Проблема в том, что если AccessibilityService
вылетает. Он остается включенным, но работающего экземпляра нет. Итак, мой Service
считает, что он включен, но на самом деле AccessibilityService
не работает.
Как проверить AccessibilityService
public boolean checkAccesibilityService()
{
int accessibilityEnabled = 0;
boolean accessibilityFound = false;
try {
accessibilityEnabled = Settings.Secure.getInt(
mContext.getApplicationContext().getContentResolver(),
android.provider.Settings.Secure.ACCESSIBILITY_ENABLED);
//Log.v(TAG, "accessibilityEnabled = " + accessibilityEnabled);
} catch (Settings.SettingNotFoundException e) {
Log.e(TAG, "Error finding setting, default accessibility to not found: "
+ e.getMessage());
}
if (accessibilityEnabled == 1) {
//Log.v(TAG, "***ACCESSIBILIY IS ENABLED*** -----------------");
String settingValue = Settings.Secure.getString(
mContext.getApplicationContext().getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
if (settingValue != null) {
if(TextUtils.isEmpty(settingValue)) {
Log.i(TAG, "Nessun servizio abilitato!");
return false;
}
TextUtils.SimpleStringSplitter splitter = new TextUtils.SimpleStringSplitter(':');
splitter.setString(settingValue);
while (splitter.hasNext()) {
String accessabilityService = splitter.next();
//Log.v(TAG, "-------------- > accessabilityService :: " + accessabilityService);
if (accessabilityService.equalsIgnoreCase(ACCESSIBILITY_SERVCE)) {
//Log.v(TAG, "Accessibility Service Attivato!");
return true;
}
}
Log.v(TAG, "Accesibility Service non abilitato!");
return false;
}
} else {
Log.v(TAG, "***ACCESSIBILIY IS DISABLED***");
}
return accessibilityFound;
}
Вопрос 1. Почему при сбое AccessibilityService
ОС Android не перезапускает его?
Вопрос 2. Могу ли я изменить свой код, чтобы проверить, включен ли AccessibilityService
, но есть ли при этом работающий экземпляр?