Android 7.1.2 Устранение неполадок при создании приложения Устройство-администратор или владелец для расширенных возможностей
Я делаю приложение, которое работает на определенном и выделенном планшете (Teclast P10, дешевый китайский планшет), как часть решения для мини-цифровой подписи / киоска. Не должно быть никаких обычных аргументов "вы должны уважать предпочтения пользователя", чтобы рассмотреть этот вопрос, поскольку это проприетарный продукт. Напротив, я делаю все возможное, чтобы пользователи не могли получить доступ ко всему, что находится за пределами моего полноэкранного иммерсивного приложения.
Но главное, лично я просто пытаюсь понять, как правильно это сделать... кажется, что Android недавно пытался раскрыть всю сущность устройства-администратора, и я не могу найти любое подходящее решение для того, что я пытаюсь сделать. В лучшем случае все руководства и официальные документы либо не связаны, либо предназначены для чего-то совершенно другого.
Моему приложению нужно несколько возможностей (внутри кода и без root):
- Получить WiFi MAC-адрес
- Программно перезагрузить планшет
- Установить часовой пояс
- Различные другие продвинутые / глобальные вещи
- и т.п.
Должен ли я пытаться зарегистрировать свое приложение как "администратор устройства" или "владелец устройства" (или что-то еще полностью)? Примечание: это приложение должно работать потенциально без внешнего доступа к Интернету и не должно полагаться на какую-либо схему удаленного управления политиками. Я надеюсь, что рутирование - не единственный мой выбор!
Я попробовал маршрут device-admin, следуя нескольким официальным примерам, руководствам для блоггеров и таким вопросам. Я получил экран Настройки-> Безопасность->DeviceAdministrators, чтобы показать мое приложение, и я могу поставить там галочку, но когда я запускаю свое приложение (код ниже), оно, похоже, не залипает. Например, я попробовал следующее: devicepolicymanager.isAdminActive(name1)
оценивается как ложное (из: Получить MAC-адрес устройства в Android Nougat и O программным способом).
DeviceAdminReceiver admin = new DeviceAdminReceiver();
DevicePolicyManager devicepolicymanager = admin.getManager(context);
ComponentName name1 = admin.getWho(context);
if (devicepolicymanager.isAdminActive(name1)){
macAddress = devicepolicymanager.getWifiMacAddress(name1);
Log.i(TAG, TAGG+"Mac found: "+ macAddress);
}
Я пробовал маршрут владельца устройства (через https://github.com/googlesamples/android-DeviceOwner), но он также не может сообщить о моем приложении как владельца устройства.
По какой-то причине я не могу использовать инструмент DPM из командной строки с ADB из-за несвязанной проблемы с моим сеансом adb, не связанным с моей станцией разработки Linux. Кроме того... само приложение должно идеально справиться с этим, чтобы упростить выделение ресурсов.