Как сделать мое приложение владельцем устройства без команды оболочки NFC и ADB?

У меня есть приложение для Android, которое установлено на более чем 100 устройствах. (Android 5.1.1 API22 и 6.0.1 API 23)

https://developer.android.com/reference/android/app/admin/package-summary.html

Я просмотрел все эти ссылки, но безуспешно.

Используя devicePolicyManager, я получаю сообщение об ошибке: XXXXX App не является владельцем устройства.

Я знаю, что есть способ получить владельца устройства с помощью команды оболочки (ADB), но я не могу сделать это на всех устройствах по отдельности через usb.

DevicePolicyManager deviceManger = (DevicePolicyManager) Forms.Context.GetSystemService (Context.DevicePolicyService); ComponentName demoDeviceAdmin = новое ComponentName (Forms.Context, Java.Lang.Class.FromType (typeof (DeviceAdmin))); deviceManger.SetGlobalSetting (demoDeviceAdmin, wifi_device_owner_configs_lockdown, 1);


person Guest    schedule 01.11.2016    source источник


Ответы (3)


В исходном коде говорится: «Владелец устройства может быть установлен только на неподготовленном устройстве, если только он не был инициирован« adb », и в этом случае мы разрешаем его, если с устройством не связана никакая учетная запись»

Если у вас нет настроенных учетных записей, вы можете настроить их программно с помощью dpm:

try {
    Runtime.getRuntime().exec("dpm set-device-owner com.example.deviceowner/.MyDeviceAdminReceiver");
} catch (Exception e) {
    Log.e(TAG, "device owner not set");
    Log.e(TAG, e.toString());
    e.printStackTrace();
}

Ссылка: http://florent-dupont.blogspot.fr/2015/01/android-shell-command-dpm-device-policy.html.

person Steve Miskovetz    schedule 24.05.2017
comment
Я выполняю тот же оператор, но возвращает null и ничего не применяет ... что может быть? - person Dhruv; 16.12.2017
comment
@Dhruv Привет, я испытал то же самое. Я знаю, что прошло какое-то время, но есть какие-нибудь сведения о том, как вы решили эту проблему? - person Eugenio Lopez; 06.10.2018
comment
Я попытался реализовать это и обнаружил, что он работает только на корневых устройствах. в противном случае команду dpm можно использовать только в оболочке adb. Если есть другой способ выполнить эту команду программно без root, поделитесь. - person Eugenio Lopez; 12.10.2018

Есть несколько различных способов сделать устройство владельцем Android-устройства. В зависимости от того, принадлежат ли устройства вам или это BYOD, вы можете использовать разные методы. В этой таблице от Google перечислены все возможные способы передачи устройства в собственность. Вы можете найти его здесь.

person kash    schedule 03.11.2016

Я создал метод MakeOwner () и вызвал метод onCreate, и мне повезло, что он сработал хорошо ...

 public void MakeOwner(){
      try {
            Runtime.getRuntime().exec("dpm set-device-owner com.exampledemo.parsaniahardik.scanbarcodeqrdemonuts/.BasicDeviceAdminReceiver");
        } catch (Exception e) {
            Log.e(TAG, "device owner not set");
            Log.e(TAG, e.toString());
            e.printStackTrace();
        }
    }
person Shahbaz Pirzada    schedule 26.03.2018
comment
Здравствуйте, я выполняю тот же оператор, но возвращает ноль, и ничего не применяется. Поскольку я нахожусь в Windows, я пробовал использовать префикс cmd, но возникло исключение (Ошибка при запуске exec (). Команда: [cmd, set-device-owner] Рабочий каталог: null Среда: null). Любая помощь будет принята с благодарностью. - person Eugenio Lopez; 05.10.2018