Activer l'administrateur de périphériques via ADB

9

Est-il possible d'activer Device Administrator via la commande ADB au lieu de taper

"Paramètres -> Sécurité -> Administrateurs de périphériques -> Sélectionner une application -> Activer"

sur ordinateur de poche?

Si c'est possible, comment?

marengga
la source
Vous devriez envisager d'accepter la réponse de вʀaᴎᴅᴏƞ вєнᴎєƞ car cela fonctionne parfaitement !!
Cliff Burton

Réponses:

6

Ce n'est pas possible. Le code des paramètres est spécifiquement écrit pour éviter cela. Le plus proche est d'appeler la page Paramètres d'administration de l' appareil dans l' application Paramètres . Vous pouvez le faire avec:

adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
Dan Hulme
la source
Merci Dan, petite correction: ça devrait être adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" Sans guillemet simple
marengga
Dans la plupart des shells, cette commande ne fera que démarrer les paramètres , pas la page Paramètres d'administration de l' appareil . Voici pourquoi Izzy explique pourquoi .
Dan Hulme
Qu'en est-il de la désactivation? est-ce possible?
développeur Android
5

Testé et fonctionnant sur Android 7.0 sans root:

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

Pour trouver le récepteur administrateur d'un package installé, utilisez la commande suivante pour adb shell et passez en revue la sortie:

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

Pour donner un exemple réel, voici la commande utilisée pour activer le client Android Maas360 d'IBM en tant qu'administrateur de périphérique:

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
вʀaᴎᴅᴏƞ вєнᴎєƞ
la source
ÇA MARCHE! Ce doit être la réponse acceptée! J'ai une question, est-il possible d'ajouter un supplément à cette commande? Je dois demander l'activation de la licence Samsung Knox juste après l'activation de l'administrateur et je voudrais transmettre la clé de la licence en supplément (donc je n'ai pas besoin de la stocker dans mon code ou sur mon appareil)
Cliff Burton
1

Oui, à condition d'avoir un accès root. Vous devez ajouter le récepteur de l'application et l'indicateur de stratégie dans le fichier /data/system/device_policies.xml. Par exemple, pour activer Tasker en tant qu'administrateur de périphérique, ajoutez les lignes suivantes dans ledit fichier,

Pour Android 5.x: supprimez la dernière ligne avec </policies>s'il y a déjà un administrateur de périphérique activé dans le système. Ajoutez simplement les lignes dans le fichier après la ligne avec la chaîne <policies setup-complete="true">.

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

Pour Android 4.2.1: supprimez la dernière ligne avec </policies>s'il y a déjà un administrateur de périphérique activé dans le système. Ajoutez simplement les lignes dans le fichier après la ligne avec la chaîne <policies>.

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

Redémarrez l'appareil pour que les modifications prennent effet.

( Busybox requis) Vous pouvez utiliser sedou echoou n'importe quelle commande avec laquelle vous êtes à l'aise pour écrire le fichier avec ces lignes. Pour toute aide, voir ma réponse ici: Comment activer l'administrateur de l'appareil pour des applications spécifiques à l'aide de Tasker?

Seigneur du feu
la source
0

C'est possible. Vous pouvez utiliser le nouvel outil UI-Automator d'Android pour cliquer et interagir avec n'importe quelle vue ou bouton du système, y compris en appuyant sur "Activer" pour l'administrateur de l'appareil. Voici comment:

  1. Lancez UI-Automator . (allez dans "Configurer votre environnement de développement" et configurez un nouveau projet java).
  2. Écrivez du code pour interagir avec votre liste de préférences et cliquez sur "Activer". Exemple:

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

  3. Compilez-le: ant build

  4. Poussez le fichier jar: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Lancez votre activité de paramétrage: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Exécutez l'automatisation: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Fête.
Tim O'Brien
la source
Est-ce que cela fonctionnera même si les paramètres régionaux actuels de l'appareil ne sont pas en anglais?
développeur Android
0

vous pouvez définir l'appareil en tant que propriétaire à partir d'Android Studio. Accédez d'abord à l'emplacement adb qui se trouve sur Platform-tools dans Android Sdk, puis exécutez la commande shell adb. J'ai donné le chemin complet et vous pouvez vous adapter à vos besoins en modifiant le chemin d'accès adb et le nom du package

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

MyDeviceAdminReceiver est l'interface.

Mudassir Khan
la source