Как сделать мое приложение владельцем устройства?

API-интерфейсы API-интерфейсов устройств и обзор Android 5.0 упоминают что-то о приложение владельца устройства. Как настроить приложение как владельца устройства?

Изменить: Есть ли какие-либо другие способы, кроме rooting, и NFC, если они доступны, пожалуйста, поделитесь.

Ответ 1

На самом деле есть способ, отличный от NFC, и rooting для установки приложения в качестве приложения владельца устройства. Вы можете использовать инструмент командной строки dpm из adb shell.

Использование:

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.

ОБНОВЛЕНИЕ: Утилита dpm действительно проста. Его цель - создать новый файл под названием device_owner.xml под /data/system/device_owner.xml, который ссылается на приложения Device/Profile owner.

Платформа Android затем читает этот файл, чтобы проверить, какое приложение рассматривается как владелец устройства или приложение для владельца профиля.

На корневом устройстве, вы действительно можете создать этот файл самостоятельно, но так как инструмент dpm делает это, вы лучше использовать его (принцип DRY):

Например с помощью команды Runtime.exec():

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

Также обратите внимание, что этот инструмент работает только в том случае, если для пользователя не установлена ​​учетная запись (убедитесь, что учетная запись не установлена ​​в Настройках > Учетные записи) до ее использования.

Источник и дополнительная информация в Инструмент командной оболочки оболочки Android: Диспетчер политик устройств

Ответ 2

Если вы используете root на своем устройстве, вы можете следовать этому методу, чтобы стать владельцем устройства.

Сначала создайте файл device_owner.xml со следующим содержимым:

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

Теперь выполните следующие шаги

  • adb push device_owner.xml /sdcard/

  • adb shell

  • su

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

  • cd /data/system/

  • chown system:system device_owner.xml

  • перезагрузка

Примечание. Перед перезагрузкой устройства убедитесь, что вы установили приложение, которое вы пытаетесь сделать владельцем устройства. Если вы этого не сделаете, вы получите загрузочную анимацию в течение бесконечного времени.

Ответ 3

Просто попробовал, а команда dpm требует привилегий root на реальных устройствах (например, Samsung T550), иначе с ошибкой будет SecurityException. adb shell предоставляет только root для эмуляторов Android. Таким образом, вам придется сначала запустить устройство.