Я пишу приложение xamarin для Android, которое использует API администратора устройства для реализации «режима киоска».Для этого я реализовал подкласс DeviceAdminReceiver и установил этот компонент в качестве администратора устройства с помощью команды adb "dpm set-device-owner".Я могу сделать это успешно.
Однако после того, как я сделал приложение администратором устройства, я не могу удалить приложение, не выполнив заводскую очистку, которая делает отладку настоящей питой.В выводе справки команды dpm говорится, что вы можете использовать подкоманду remove_active_admin для удаления администратора устройства, если в манифесте приложения объявлено android: testOnly.Я попытался сделать это с помощью атрибута приложения, например,
[Application(Debuggable = true, TestOnly = true )]
public class MyApp: Application
{
}
Однако свойство TestOnly недоступно для атрибута приложения в xamarin.
Мои вопросы ...
- Как добавить свойство testOnly в мой манифест в xamarin?
- Есть ли другой способ сделать мой DeviceAdminReceiver съемным?
Ниже приведены скриншоты из настроек-> Безопасность -> Меню администратора устройства.
- Показывает, что мой DeviceAdminReceiver успешно активирован.
- Показывает параметр удаления, выделенный серым цветом для моего DeviceAdminReceiver.
- Показывает другой DeviceAdminReceiverна моем устройстве с возможностью удаления включен.
Спасибо!
Обновление
Большое спасибо SushiHangover за ответ.Я хотел добавить, что если вы установите этот флаг в своем манифесте, apk больше не будет правильно устанавливаться при отладке проекта.Вместо этого вам придется использовать команду adb pm для установки пакета.Я сделал следующие скрипты, чтобы упростить установку / удаление apk.Примечание: команда dpm не работает, если корневое пространство имен начинается с заглавной буквы.
Для установки
adb push com.bla.myproject.apk /sdcard/app.apk
adb shell pm install -t /sdcard/app.apk
adb shell dpm set-device-owner com.bla.myproject/com.bla.myproject.AdminRx
Для удаления
adb shell dpm remove-active-admin com.bla.myproject/com.bla.myproject.AdminRx
adb shell pm uninstall com.bla.myproject