Cómo habilitar / deshabilitar el servicio de accesibilidad mediante programación en Android

Quisiera habilitar / deshabilitar los servicios de accesibilidad mediante programación en la opción Ajustes-> Accesibilidad.

Podría comenzar Accesibilidad Intent como abajo:

Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivityForResult(intent, 0); 

Pero no tengo ni idea de cómo habilitar los servicios enumerados en la vista a través de mi código.

Por favor, proporcione sus opiniones.

Encontré una solución que funcionó para mí llamando

 Settings.Secure.putString(getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, "pkgname/classname"); Settings.Secure.putString(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, "1"); 

Donde pkgname es el nombre del paquete y el classname es el nombre de la clase de su servicio de accesibilidad.

Si necesita habilitar varios servicios o no desea destory los ajustes anteriores, puede usar : para separar otros servicios.

También puede ser necesario ejecutarlo como una aplicación del sistema y es posible que necesite los siguientes permisos

 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

Sin embargo, de acuerdo con @Rupert Rawnsley esto podría no funcionar en algunas versiones de Android, estoy trabajando en Android 4.0.4 y espero que funcione para usted.

PD. Si no funciona, tal vez pueda encontrar algo de suerte en /data/data/com.android.providers.settings/databases/settings.db/secure , ahí es donde Android almacena la configuración segura.

AccessibilityService es especial y no se puede iniciar mediante programación.

Lo mejor que puedes hacer es manualmente abrir la configuración de accessibilty con:

Intención intention = new Intent (Settings.ACTION_ACCESSIBILITY_SETTINGS)

y comenzar la intención – también puede hacerlo desde el archivo xml prefernece:

intento android: action = "android.settings.ACCESSIBILITY_SETTINGS"

En Android 7 (API 24), un AccessibilityService puede desactivarse mediante programación llamando al método disableSelf () .

Desde Android 6.0 puedes usar:

 adb shell settings put secure enabled_accessibility_services packagname/servicename 

El settings.db de versiones anteriores ya no está presente en Android 6.0.

Apenas en caso de que cualquier persona todavía intente apagar el talkback de adb cuando usted se pega en su pantalla de la cerradura que introduce la contraseña o el perno. Una cosa que puedes intentar es adb shell am force-stop com.google.android.marvin.talkback

Encontré este post: ¿Cómo verificar mediante programación si un servicio está declarado en AndroidManifest.xml? . La respuesta superior habla de PackageManager, que le indica lo que está ejecutando.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.