Activar Administrador de dispositivos a través de ADB


Respuestas:


6

No es posible. El código de configuración está escrito específicamente para evitar esto. Lo más cerca que puede acercarse es abrir la página de configuración de administración del dispositivo en la aplicación Configuración . Puedes hacer esto con:

adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"

Gracias Dan, pequeña corrección: debería ser adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" sin comillas simples
marengga

En la mayoría de los shells, ese comando solo iniciará la Configuración , no la página de configuración de administración del dispositivo . Aquí está la explicación de Izzy de por qué .
Dan Hulme

¿Qué pasa con la desactivación? ¿es eso posible?
Desarrollador de Android

5

Probado y trabajando en Android 7.0 sin root:

adb shell
dpm set-active-admin --user current com.company.foo.bar.package/.the.Admin.Reciever

Para encontrar el receptor de administrador de un paquete instalado, use lo siguiente para adb shell command y revise el resultado:

adb shell
pm dump com.company.foo.bar.package | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

Para dar un ejemplo del mundo real, aquí está el comando utilizado para activar el cliente Android Maas360 de IBM como administrador del dispositivo:

adb shell
pm dump com.fiberlink.maas360.android.control | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

Output:
…
com.fiberlink.maas360.android.control/.receivers.GoogleCampaignReceiver
com.fiberlink.maas360.android.control/.receivers.LocalEventReceiver
com.fiberlink.maas360.android.control/.receivers.Maas360DeviceAdminReceiver  <-- This is the one I want
com.fiberlink.maas360.android.control/.receivers.Maas360SecondaryDeviceAdminReceiver
…


Set Device Admin:    
dpm set-active-admin --user current com.fiberlink.maas360.android.control/.receivers.Maas360DeviceAdminReceiver

¡FUNCIONA! ¡Esta debe ser la respuesta aceptada! Tengo una pregunta, ¿es posible agregar un extra a ese comando? Necesito solicitar la activación de la licencia de Samsung Knox justo después de la activación del administrador y me gustaría pasar la clave de la licencia como extra (por lo que no tengo que almacenarla en mi código o en mi dispositivo)
Cliff Burton

1

Sí, siempre que tenga acceso de root. Tendría que agregar el receptor de la aplicación y el indicador de política en el archivo /data/system/device_policies.xml. Por ejemplo, para habilitar Tasker como administrador del dispositivo, agregue las siguientes líneas en dicho archivo,

Para Android 5.x: elimine la última línea con </policies>si ya hay un Administrador de dispositivos habilitado en el sistema. Simplemente agregue las líneas en el archivo después de la línea con cadena <policies setup-complete="true">.

<admin name="net.dinglisch.android.taskerm/net.dinglisch.android.taskerm.MyDeviceAdminReceiver">
<policies flags="8" />
</admin>
</policies>

Para Android 4.2.1: elimine la última línea con </policies>si ya hay un Administrador de dispositivos habilitado en el sistema. Simplemente agregue las líneas en el archivo después de la línea con cadena <policies>.

<admin name="net.dinglisch.android.taskerm/net.dinglisch.android.taskerm.MyDeviceAdminReceiver">
<policies flags="8" />
</admin>
</policies>

Reinicie el dispositivo para que los cambios surtan efecto.

(Se requiere Busybox ) Puede usar sedo echocualquier comando con el que se sienta cómodo para escribir el archivo con esas líneas. Para obtener ayuda, consulte mi respuesta aquí: ¿Cómo habilitar el administrador del dispositivo para aplicaciones específicas usando Tasker?


0

Esto es posible Puede utilizar la nueva herramienta UI-Automator de Android para hacer clic e interactuar con cualquier vista o botón en el sistema, incluido presionar "Activar" para el administrador del dispositivo. Así es cómo:

  1. Obtener IU-Automator en ejecución. (vaya a "Configure su entorno de desarrollo" y configure un nuevo proyecto de Java).
  2. Escriba un código para interactuar con su lista de preferencias y haga clic en "Activar". Ejemplo:

    UiScrollable settingsItem = new UiScrollable (new UiSelector (). ClassName ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (nuevo UiSelector (). ClassName ("android.widget.LinearLayout"), "Activar administrador de dispositivo"); listButton.click (); (nuevo UiObject (nuevo UiSelector (). text ("Activate"))). clickAndWaitForNewWindow (); me.celebrateWith (nueva cerveza ());

  3. Compilarlo: ant build

  4. Empuje el archivo jar: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Inicie su actividad de configuración: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Ejecute la automatización: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Fiesta.

¿Funcionará incluso si la configuración regional actual del dispositivo no es en inglés?
Desarrollador de Android

0

Puede configurar el dispositivo como propietario desde Android Studio. Primero vaya a la ubicación adb que se encuentra en Platform-tools en Android Sdk y luego ejecute el comando adb shell. He dado la ruta completa y puede ajustar a su requerimiento al cambiar la ruta adb y el nombre del paquete

C:\Users\Owner\AppData\Local\Android\Sdk\platform-tools>adb shell dpm set-device-owner package-name/.MyDeviceAdminReceiver

MyDeviceAdminReceiver es la interfaz.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.