¿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?

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 :

  1. 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> 
  1. 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í )

  2. Necesita el permiso BIND_DEVICE_ADMIN

  3. 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)

  4. 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.

  • ¿Cómo hacer que el dispositivo Android siempre esté en modo despertar?
  • ¿Cómo puedo obtener permisos de root a través del SDK de Android?
  • Cómo usar unix pipes en Android
  • ¿Cómo conceder acceso root a una aplicación específica desde el código fuente en lugar de arraigar la ROM?
  • Escribir archivos en / system
  • Android: cambia la configuración del sistema de un dispositivo enraizado desde la aplicación
  • ¿Detección de raíz de Android mediante etiquetas de construcción?
  • Ejecute el programa android como root
  • Cómo instalar la aplicación de Android en el directorio de sistema / app sin dispositivo enraizado para que el usuario no pueda desinstalar esa aplicación
  • Fuerza Cierre una aplicación mediante programación
  • ¿Cómo funciona su trabajo en android? ¿Y cuáles son los requisitos previos para que funcione? ¿Qué es el enraizamiento en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.