我的应用程序中有一个扩展 DeviceAdminReceiver 的类 AdminReceiver。以前我通过 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
.
这很疯狂,因为当我尝试删除配置文件所有者时,它就像它没有它一样,如果我尝试让它成为配置文件所有者,它就像它已经拥有一样!
有没有任何解决方案没有任何设备的出厂重置?