Владелец устройства не очищается на Android M - PullRequest
0 голосов
/ 01 марта 2019

Я написал приложение-киоск владельца устройства, в котором я хотел бы удалить статус владельца устройства, чтобы я мог удалить его, не выполняя сброс настроек устройства.Следующее работает на 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 очищала владельца устройства, я просматриваю системный журнал и не вижу ничего, что указывает на возникновение каких-либо исключений.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 марта 2019

Я не сталкивался с такой проблемой на Зефире.

Это странно, хотя я не могу дать ответ, я предложу что-то

1) Это может быть ошибкой.Таким образом, вы можете восстановить заводские настройки устройства и повторить попытку.

2) Для этого типа тестирования очень удобно использовать эмулятор, так как вы можете легко просто удалить и создать новое.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...