Attiva Amministratore dispositivo tramite ADB


9

È possibile attivare Device Administrator tramite il comando ADB invece di toccare

"Impostazioni -> Sicurezza -> Amministratori dispositivo -> Seleziona app -> Attiva"

sul palmare?

Se è possibile, come?


Dovresti considerare di accettare la risposta di " come funziona perfettamente !!"
Cliff Burton,

Risposte:


6

Non è possibile. Il codice delle impostazioni è stato appositamente scritto per evitarlo. Il più vicino che puoi venire è far apparire la pagina delle impostazioni di amministrazione del dispositivo nell'app Impostazioni . Puoi farlo con:

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

Grazie Dan, piccola correzione: dovrebbe essere adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" senza virgolette
marengga

Nella maggior parte delle shell, quel comando avvierà solo Impostazioni , non la pagina delle impostazioni di amministrazione del Dispositivo . Ecco la spiegazione di Izzy sul perché .
Dan Hulme,

Che dire della disabilitazione? è possibile?
sviluppatore Android

5

Testato e funzionante su Android 7.0 senza root:

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

Per trovare il destinatario admin di un pacchetto installato, utilizzare il comando seguente per adb shell e rivedere l'output:

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

Per fare un esempio del mondo reale, ecco il comando utilizzato per attivare il client Android Maas360 di IBM come amministratore 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

FUNZIONA! Questa deve essere la risposta accettata! Ho una domanda, è possibile aggiungere un extra a quel comando? Devo richiedere l'attivazione della licenza Samsung Knox subito dopo l'attivazione dell'amministratore e vorrei passare la chiave di licenza come extra (quindi non devo memorizzarla nel mio codice o sul mio dispositivo)
Cliff Burton

1

Sì, a condizione che tu abbia l'accesso come root. Dovresti aggiungere il destinatario dell'app e il flag dei criteri nel file /data/system/device_policies.xml. Ad esempio, per abilitare Tasker come amministratore del dispositivo aggiungere le seguenti righe in detto file,

Per Android 5.x: rimuovere l'ultima riga con </policies>se è già abilitato un amministratore dispositivo nel sistema. Aggiungi semplicemente le righe nel file dopo la riga con stringa <policies setup-complete="true">.

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

Per Android 4.2.1: rimuovere l'ultima riga con </policies>se è già abilitato un amministratore dispositivo nel sistema. Aggiungi semplicemente le righe nel file dopo la riga con stringa <policies>.

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

Riavvia il dispositivo per rendere effettive le modifiche.

( Busybox richiesto) È possibile utilizzare sedo echoo qualsiasi comando con cui si è a proprio agio per scrivere il file con quelle righe. Per qualsiasi aiuto, vedi la mia risposta qui: Come abilitare l'amministratore del dispositivo per app specifiche utilizzando Tasker?


0

Questo è possibile Puoi utilizzare il nuovo strumento UI-Automator di Android per fare clic e interagire con qualsiasi vista o pulsante sul sistema, incluso premere "Attiva" per l'amministratore del dispositivo. Ecco come:

  1. Avvia UI-Automator in esecuzione. (vai a "Configura il tuo ambiente di sviluppo" e imposta un nuovo progetto Java).
  2. Scrivi un codice per interagire con l'elenco delle tue preferenze e fai clic su "Attiva". Esempio:

    UiScrollable settingsItem = new UiScrollable (new UiSelector (). ClassName ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (nuovo UiSelector (). ClassName ("android.widget.LinearLayout"), "Enable Device Admin"); listButton.click (); (nuovo UiObject (nuovo UiSelector (). text ("Activate"))). clickAndWaitForNewWindow (); me.celebrateWith (new Beer ());

  3. Compilalo: ant build

  4. Invia il file jar: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Avvia l'attività delle impostazioni: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Esegui l'automazione: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Festa.

Funzionerà anche se le impostazioni internazionali correnti del dispositivo non sono in inglese?
sviluppatore Android

0

puoi impostare il dispositivo come proprietario da Android Studio. Prima vai nella posizione adb che si trova su Platform-tools in Android Sdk e quindi esegui il comando adb shell. Ho fornito il percorso completo e puoi adattarti alle tue esigenze cambiando il percorso adb e il nome del pacchetto

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

MyDeviceAdminReceiver è l'interfaccia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.