Cómo hacer que mi aplicación de un dispositivo de dueño?

La la política de dispositivos el administrador de la API de google docs y la android 5.0 descripción ambos mencionar algo acerca de un propietario del dispositivo aplicación. ¿Cómo puedo configurar mi aplicación como un propietario del dispositivo?

Editar:
Hay otras maneras de enraizamiento y NFC si está disponible, por favor compartir.

  • Desde el enlace —>Un dispositivo propietario de la aplicación es un dispositivo especial de administración que no puede ser desactivada por el usuario, una vez activado el dispositivo de administración. También no se puede desinstalar. <— , solo quiero saber como configurar mi app como propietario de la aplicación
  • Leer developer.android.com/guide/topics/admin/device-admin.html para más.
  • La persona que usa su aplicación deberá ser el administrador no (), el desarrollador, así que no creo que se pueda hacer tal aplicación, que no puede ser desinstalado!
  • Por favor, lea el enlace no se menciona como propietario de la aplicación y no soy yo sólo quiero saber cómo es posible.
  • Para hacer tu aplicación como propietario del dispositivo sin necesidad de rootear el dispositivo de seguimiento [Propietario del Dispositivo en Android 5.0 (y otros) sin dispositivos arraigados, aprovisionamiento de dispositivos con NFC][1] [1]: stackoverflow.com/questions/26906210/…

5 Kommentare

  1. 53

    Hay realmente una manera distinta a la de la NFC y el enraizamiento de configurar una aplicación como un dispositivo propietario de la aplicación.
    Usted podría utilizar la dpm herramienta de línea de comandos de 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 dpm utilidad es muy simple en realidad. Su objetivo es crear un nuevo archivo llamado device_owner.xml bajo /data/system/device_owner.xml que hace referencia a la Dispositivo/Perfil del propietario aplicaciones.

    La plataforma Android es entonces la lectura de este archivo para comprobar que la solicitud se considera como un Propietario del Dispositivo o Perfil del Propietario de la Aplicación.

    En un dispositivo de raíces, usted podría, de hecho,crear este archivo por ti, pero desde el dpm herramienta está haciendo, es mejor que lo utilizan (principio SECO) :

    Por ejemplo a través de un Runtime.exec() comando:

    Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");

    También aviso que esta es una herramienta de trabajo sólo si no se cuenta está configurada para el usuario (asegúrese de que no cuenta en Ajustes > Cuentas) antes de su uso.

    Fuente y más información en Android shell de comandos de la herramienta : la Política de Dispositivos el Administrador de

    • El uso de la dpm comando se realiza a través de un adb shell de comandos, por lo que primero se necesita proporcionar su dispositivo, activar el modo de desarrollador, habilitar la depuración, instalar la aplicación como de costumbre (lo instale con Android Studio, por ejemplo) y, a continuación, establecer como propietario del dispositivo aplicación con dpm. Usted puede considerar el comando dpm como una herramienta para facilitar el desarrollo de dispositivo/perfil del propietario de aplicaciones.
    • Esta solución no puede ser utilizado en la producción, pero es perfecto para el desarrollo.
    • ¿Por qué digo esto no puede ser utilizado en la producción? Cualquier solución que no requiere de enraizamiento del dispositivo parece más adecuado para entornos de producción.
    • La solución requiere para habilitar las herramientas de depuración en el dispositivo de destino, para adb.
    • Que normalmente es cómo la empresa se instalan las aplicaciones.
    • Bueno y breve respuesta que me ha ayudado mucho! Solo quiero añadir que hay más detalles de implementación que no se muestran, tales como la adición de los dispositivos de administración de código del receptor, que es necesario para hacer que el dpm comando trabajo. FYI. sdgsystems.com/blog/…
    • Al hacer los pasos mentiond de arriba me sale el siguiente mensaje de error: java.lang.IllegalStateException: Tratando de establecer propietario del dispositivo, pero el dispositivo ya está aprovisionado.
    • Para mí, dpm comando trabajado sólo cuando se especifica el nombre del componente como este: com.ejemplo.app/.DeviceOwnerReceiver La parte posterior / es el nombre de la clase que se extiende DeviceAdminReceiver
    • estás en lo correcto. He actualizado el artículo para corregir el error.
    • Cuando llamo desde la línea de comandos «adb shell dpm set-dispositivo-propietario BLA» las cosas funcionan bien (mi aplicación se convierte en propietario del dispositivo – no entiendo una excepción de seguridad porque mi app es una aplicación del sistema), pero cuando me llaman de mi programa «tiempo de ejecución.getRuntime().exec(«dpm set-dispositivo-propietario BLA»);» tengo un error silenciosa (no una SecurityException, aunque me gustaría que me dieron algunos comentarios). Alguna idea de por qué?
    • Sólo añadir que este se ejecute en modo normal, no en modo de recuperación que he probado en la primera
    • ¿Cómo sé cuál es el nombre del componente es?
    • Que el nombre del paquete que se establezca en el manifest.xml de su aplicación. consulte developer.android.com/guide/topics/manifest/…
    • cómo provisión mi app como dispositivo de administración para la producción de propósito?
    • ¿Por qué no la documentación (developer.android.com/guide/topics/admin/device-admin) decir nada acerca de estos pasos? Da más bien la impresión de que el administrador de la aplicación sólo debe trabajar por una distribución normal (Play Store, Correo electrónico, etc.).

  2. 13

    Si eres root en su dispositivo, usted puede seguir este método para convertirse en propietario del dispositivo.

    Primero, cree un archivo de device_owner.xml con el contenido siguiente:

    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
    <device-owner package="your.owner.app.package.id" name="Your app name" />

    Ahora hay que hacer los siguientes pasos

    1. adb push device_owner.xml /sdcard/

    2. adb shell

    3. su

    4. cp /sdcard/device_owner.xml /data/system/

    5. cd /data/system/

    6. chown system:system device_owner.xml

    7. reiniciar

    Nota : Antes de reiniciar el dispositivo, asegúrese de que ha instalado la aplicación, que está tratando de hacer del propietario del dispositivo. Si usted no lo hace, obtendrá animación de arranque para tiempo infinito.

    • Para rootear el dispositivo sigue: ibtimes.co.reino unido/…
    • pero este trabajo si hay una (Gmail)cuenta asociada con el dispositivo.
    • esto no está relacionado con que en todo y funciona independientemente
    • gracias por tu último paso, reiniciar, yo estaba luchando para conseguir que funcione de otra guía, no dándose cuenta tuve que reiniciar para que surta efecto….
  3. 0

    Actualización:

    En mi Android 7.1.2 set-top box (AOSF y sus raíces), he encontrado un par de cosas que han evolucionado con el tiempo.

    1. exec("dpm set-device-owner ...") lanza y la excepción, a menos que <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" /> se declara en el AndroidManifest.xml. Pero eso trae otros problemas, más que aquí.
    2. El archivo /data/system/device_policy.xml no aparecer nunca más. En su lugar, ahora es /data/system/device_policy_2.xml y el esquema es un poco diferente. Ejecución de dpm set-device-owner com.myDomain.myPackage/.myComponent a 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>
  4. 0

    También puede utilizar la reflexividad, llamando a la DevicePolicyManager método llamado setProfileOwner que estaba escondido en la Documentación del SDK de.

    No olvide cancelar lo contrario vas a tener algunos conflictos con el Google Play 😉

  5. -1

    Intentado, y el dpm comando requiere privilegios de root en dispositivos reales(Samsung T550 por ejemplo), de lo contrario se producirá con SecurityException. adb shell sólo otorga root en android emuladores. Así que usted tendrá que arrancar de raíz el dispositivo primero.

    • El OP está pidiendo otro método que «rootear» el dispositivo.
    • Eso no es cierto en un Nexus 5, dpm funciona muy bien para mí SIN acceso de root, sospecho que es más probable que se deba a algún tipo de personalización en ese específico dispositivo de Samsung.
    • Yo tenía el mismo problema (con el mismo dispositivo) y el problema no es que Samsung requiere de raíz el dispositivo. Hay Samsung permisos específicos (ver link) que es necesario establecer en el manifiesto para el propietario del dispositivo para el trabajo. Tuve que agregar el permiso com.sec.enterprise.permission.CUSTOM_PROKIOSK al manifiesto. seap.samsung.com/html-docs/android-customization/Content/…
    • De la raíz y/o permisos especiales no son necesarios en todos los dispositivos Samsung. He configurado un propietario del dispositivo con el adb y a través de código QR de aprovisionamiento sin permisos especiales o de la raíz.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea