У меня есть класс AdminReceiver, расширяющий DeviceAdminReceiver в моем приложении. Ранее я сделал это владельцем профиля через ADB shell
adb shell dpm set-active-admin com.example.myApp/com.example.myApp.AdminReceiver
adb shell dpm set-profile-owner com.example.myApp/com.example.myApp.AdminReceiver
И все прошло нормально. Впоследствии я хотел удалить его, выполнив следующую инструкцию из моего приложения программно:
DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
try {
dpm.clearProfileOwnerApp(packageName);
} catch (Exception e) {
Log.e(TAG, "removingProfile: ", e);
}
И я получил следующее исключение:
java.lang.SecurityException: Admin ComponentInfo{com.example.myApp/com.example.myApp.AdminReceiver} does not own the profile
.
Когда Я пытаюсь снова установить владельца профиля через ADB. Я получаю следующее исключение:
java.lang.IllegalStateException: Trying to set the profile owner, but profile owner is already set
.
Это безумие, потому что, когда я пытаюсь удалить владельца профиля, у него как будто его нет и если я попытаюсь сделать его владельцем профиля, он как будто уже есть!
Есть ли какое-либо решение без заводского сброса устройства?