Активировать администратора устройства через ADB

9

Можно ли активировать Администратор устройства с помощью команды ADB вместо нажатия

«Настройка -> Безопасность -> Администраторы устройства -> Выбрать приложение -> Активировать»

на портативном устройстве?

Если это возможно, то как?

marengga
источник
Вы должны принять ответ ʀaᴎᴅᴏƞ вᴎᴅᴏƞнᴎєƞ, так как он отлично работает !!
Клифф Бертон

Ответы:

6

Это невозможно. Код настроек специально написан для предотвращения этого. Самое близкое, что вы можете получить - открыть страницу настроек администрирования устройства в приложении « Настройки» . Вы можете сделать это с:

adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
Дэн Халм
источник
Спасибо Дэн, Little коррекция: она должна быть adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" без единой цитаты
marengga
В большинстве оболочек эта команда просто запускает настройки , а не страницу настроек администрирования устройства . Вот объяснение Иззи почему .
Дэн Халм
Как насчет отключения? это возможно?
Android-разработчик
5

Протестировано и работает на Android 7.0 без рута:

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

Чтобы найти администраторский получатель установленного пакета, используйте следующую команду adb shell и просмотрите выходные данные:

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

Чтобы привести пример из реальной жизни, вот команда, используемая для активации клиента IBM Maas360 Android в качестве администратора устройства:

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
вʀаᴎᴅᴏƞ вєнᴎєƞ
источник
ОНО РАБОТАЕТ! Это должен быть принятый ответ! У меня есть один вопрос, возможно ли добавить дополнительные команды? Мне нужно запросить активацию лицензии Samsung Knox сразу после активации администратора, и я хочу передать лицензионный ключ как дополнительный (чтобы мне не приходилось хранить его в моем коде или на моем устройстве)
Клифф Бертон,
1

Да, при условии, что у вас есть root-доступ. Вы должны добавить получателя приложения и флаг политики в файл /data/system/device_policies.xml. Например, чтобы включить Tasker от имени администратора устройства, добавьте в указанный файл следующие строки:

Для Android 5.x: удалите последнюю строку с, </policies>если в системе уже включен Администратор устройства. Просто добавьте строки в файл после строки со строкой <policies setup-complete="true">.

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

Для Android 4.2.1: удалите последнюю строку с, </policies>если в системе уже включен Администратор устройства. Просто добавьте строки в файл после строки со строкой <policies>.

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

Перезагрузите устройство, чтобы изменения вступили в силу.

( Требуется занятость ) Вы можете использовать sedили echoили любую удобную вам команду для записи файла с этими строками. Для получения любой помощи, смотрите мой ответ здесь: Как включить администратора устройства для определенных приложений с помощью Tasker?

Повелитель огня
источник
0

Это является возможным. Вы можете использовать новый инструмент Android UI-Automator для нажатия и взаимодействия с любым представлением или кнопкой в ​​системе, включая нажатие кнопки «Активировать» для администратора устройства. Вот как:

  1. Запустите UI-Automator . (перейдите к «Настройка среды разработки» и настройте новый проект Java).
  2. Напишите некоторый код для взаимодействия со списком ваших предпочтений и нажмите «Активировать». Пример:

    UiScrollable settingsItem = new UiScrollable (new UiSelector (). ClassName ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (new UiSelector (). ClassName ("android.widget.LinearLayout"), "Включить администратора устройства"); listButton.click (); (новый UiObject (новый UiSelector (). текст («Активировать»))). clickAndWaitForNewWindow (); me.celebrateWith (новое пиво ());

  3. Скомпилируйте это: ant build

  4. Нажмите файл фляги: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Запустите настройку активности: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Запустите автоматизацию: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Партия.
Тим О'Брайен
источник
Будет ли это работать, даже если текущая локаль устройства не английская?
Android-разработчик
0

Вы можете установить устройство в качестве владельца из Android Studio. Сначала перейдите в папку adb, которая находится в Platform-tools в Android Sdk, а затем выполните команду оболочки adb. Я дал полный путь, и вы можете настроить по вашему требованию при изменении пути adb и имени пакета

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

MyDeviceAdminReceiver - это интерфейс.

Мудассир Хан
источник