quieres - usuario invitado en android
¿Cómo hacer de mi aplicación el propietario de un dispositivo? (5)
Los documentos de la API del administrador de políticas del dispositivo y la descripción general de Android 5.0 mencionan algo acerca de la aplicación del propietario del dispositivo . ¿Cómo puedo configurar mi aplicación como propietario de un dispositivo ?
Editar: ¿Hay alguna otra forma que rooting y NFC si está disponible, por favor comparte.
Acabo de probar, y el comando dpm
requiere privilegio de root en dispositivos reales (Samsung T550 por ejemplo), de lo contrario fallará con SecurityException
. adb shell
solo otorga root en emuladores de Android. Por lo tanto, primero deberá rootear el dispositivo.
Si es root en su dispositivo, puede seguir este método para convertirse en propietario del dispositivo.
Primero, crea un archivo device_owner.xml
con el siguiente contenido:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-owner package="your.owner.app.package.id" name="Your app name" />
Ahora haz los siguientes pasos
adb push device_owner.xml /sdcard/
adb shell
su
cp /sdcard/device_owner.xml /data/system/
cd /data/system/
chown system:system device_owner.xml
reiniciar
Nota: Antes de reiniciar el dispositivo, asegúrese de haber instalado la aplicación, que está intentando convertir en propietario del dispositivo. Si no lo haces, obtendrás una animación de arranque por tiempo infinito.
También puede usar reflexividad, llamando al método DevicePolicyManager
llamado setProfileOwner
que estaba oculto en la documentación del SDK.
No olvides cancelarlo; de lo contrario, tendrás algunos conflictos con Google Play;)
Actualizar:
En mi set-top box Android 7.1.2 (AOSF y rooteado), encontré un par de cosas que han evolucionado con el tiempo.
-
exec("dpm set-device-owner ...")
throws y exception a menos que<uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
se declare en el archivo AndroidManifest.xml. Pero eso trae otros problemas, más sobre eso here . - El archivo
/data/system/device_policy.xml
ya no aparece. En cambio, ahora es/data/system/device_policy_2.xml
y el esquema es ligeramente diferente. Ejecutandodpm set-device-owner com.myDomain.myPackage/.myComponent
través de un adb shell genera el archivo como:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root>
<device-owner package="com.myDomain.myPackage" name="" component="com.myDomain.myPackage/com.myDomain.myPackage.myComponent" userRestrictionsMigrated="true" />
</root>
De hecho, hay una forma diferente a NFC y un enraizamiento para configurar una aplicación como una aplicación para el propietario del dispositivo. Puede usar la herramienta de línea de comandos dpm desde un adb shell
.
Uso:
usage: dpm [subcommand] [options]
usage: dpm set-device-owner <COMPONENT>
usage: dpm set-profile-owner <COMPONENT> <USER_ID>
dpm set-device-owner: Sets the given component as active admin, and its package as device owner.
dpm set-profile-owner: Sets the given component as active admin and profile owner for an existing user.
ACTUALIZACIÓN: la utilidad dpm
es realmente simple en realidad. Su objetivo es crear un nuevo archivo llamado device_owner.xml
en /data/system/device_owner.xml
que /data/system/device_owner.xml
referencia a las aplicaciones del propietario del Dispositivo / Perfil .
La plataforma Android está leyendo este archivo para verificar qué aplicación se considera como Propietario del dispositivo o Propietario del perfil .
En un dispositivo rooteado , puede crear este archivo usted mismo , pero dado que la herramienta dpm
está haciendo, será mejor que lo use (principio DRY):
Por ejemplo, a través de un comando Runtime.exec()
:
Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");
También tenga en cuenta que esta herramienta solo funciona si no se configura una cuenta para el usuario (asegúrese de que ninguna cuenta esté configurada en Configuración> Cuentas ) antes de usarla.
Fuente y más información en la herramienta de comandos de shell de Android: Device Policy Manager