Я написал приложение-киоск владельца устройства, в котором я хотел бы удалить статус владельца устройства, чтобы я мог удалить его, не выполняя сброс настроек устройства.Следующее работает на Nougat и Oreo, но не Marshmallow для планшетов Samsung.
Особенности того, как я кодирую вещи владельца устройства:
Чтобы установить приложение в качестве владельца устройства, я запускаю эту команду оболочки adb после установки приложения:
adb shell dpm set-device-owner com.dps.myapp/.DeviceAdminReceiver
Затем, когда я пытаюсь удалить статус владельца устройства и удалить приложение, я запускаю следующие команды оболочки:
adb shell am force-stop com.dps.myapp
adb shell am start -n com.dps.myapp/.DeactivateDeviceOwnerActivity
adb shell pm uninstall com.dps.myapp
DeactivateDeviceOwnerActivity - это действие в моем приложении, которое содержитследующий код для очистки статуса владельца устройства:
DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDevicePolicyManager.clearDeviceOwnerApp(getApplicationContext().getPackageName());
if (mDevicePolicyManager.isDeviceOwnerApp(getApplicationContext().getPackageName())) {
Toast.makeText(getApplicationContext(),
"Failure! App is still device owner.",Toast.LENGTH_LONG)
.show();
}
else {
Toast.makeText(getApplicationContext(),
"Success!", Toast.LENGTH_LONG).show();
}
То, что так странно, это то, что моя активность отображает тост, что сработал вызов clearDeviceOwnerApp, но когда я сразу после этого запускаю команду удаления, я получаюОттуда возвращается сообщение «Failure [DELETE_FAILED_DEVICE_POLICY_MANAGER]», поэтому очевидно, что владелец устройства не был очищен для моего приложения.
Кто-нибудь знает о каких-либо конкретных различиях между Marshmallow и последующими API, в отношении владения устройством или DevicePolicyManager, которые могут вызвать этокод, который работает на Nougat и Oreo, чтобы не работать на Marshmallвл?Когда я запускаю команду запуска, чтобы DeactivateDeviceOwnerActivity очищала владельца устройства, я просматриваю системный журнал и не вижу ничего, что указывает на возникновение каких-либо исключений.Любая помощь будет оценена.