¿Cómo puede mi aplicación acceder a privilegios de nivel de administración en un dispositivo no enraizado?
Android requiere superusuario para eliminar, modificar o leer cualquier cosa en el directorio raíz, excepto el sistema que es de sólo lectura.
Sin embargo, he notado que incluso sin un dispositivo enraizado, algunas aplicaciones son capaces de aprovechar estos procesos. Por ejemplo, Norton es capaz de hacer toallitas de dispositivo en teléfonos no enraizados. ¿Hay alguna forma de conceder acceso similar a mi solicitud?
- Obtener una lista de almacenamiento externo en Android 4.3
- ¿Cómo modificar AOSP para permitir que aplicaciones específicas obtengan acceso de root?
- Escribir una aplicación para Android que ejecuta comandos de Linux
- Adb shell su funciona, pero la raíz adb no
- ¿Cómo comprobar si el teléfono android está enraizado?
- Crea Android con Superusuario
- Privilegios raíz para una aplicación Android (aplicación completa, no sólo unos pocos comandos)
- ¿Es seguro deshabilitar com.android.systemui?
- Cómo cambiar el id de grupo de un archivo en el dispositivo android arraigado?
- Abra cualquier SQLiteDatabase como su / root
- Obtener permiso "root" para la aplicación de Android
- Bypass android usb host permiso diálogo de confirmación
- No se puede ejecutar en dispositivos de producción
Una aplicación con derechos de administrador puede utilizar la API de administración de dispositivos. Esta API ofrece la posibilidad de limpiar el dispositivo.
Al usar esto, no necesita ningún permiso de superusuario, solo necesita derechos de administrador del dispositivo .
Para resumir cómo utilizar la API de administración de dispositivos :
- Necesita un archivo de recursos que declare las políticas necesarias para su aplicación.
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <wipe-data /> </uses-policies> </device-admin>
-
Necesitas implementar un DeviceAdminReceiver para reaccionar a varios eventos de administración en los que tu aplicación esté interesada (una implementación vacía puede ser suficiente si solo te interesa el dispositivo de limpieza ) (más detalles sobre cómo configurar este receptor: aquí )
-
Necesita el permiso BIND_DEVICE_ADMIN
-
En algún momento (probablemente al arrancar), tu aplicación debe activar ACTION_ADD_DEVICE_ADMIN para pedirle al usuario que conceda "Derechos de administración del dispositivo" a tu aplicación. (Una vez que se conceden esos derechos, no hay ninguna razón para volver a preguntarlos. El usuario siempre tiene la posibilidad de no conceder esos derechos desde la aplicación Configuración)
-
Cuando la configuración es correcta (y si el usuario otorga derechos de administración de dispositivos a la aplicación), puede invocar DevicePolicyManager:
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); devicePolicyManager.wipeData(0);
Tenga en cuenta que una aplicación con derechos de administrador de dispositivo no se puede desinstalar. El usuario debe eliminar manualmente esos derechos (con la aplicación Configuración) antes de poder desinstalarlo.