如何在Android DPM中删除set-device-owner?

时间:2018-03-06 10:12:14

标签: android adb device-policy-manager

通过以下链接,我已经使用ADB建立了应用设备所有者: How to make my app a device owner?

但现在,我无法恢复此状态。

在设备管理选项卡中,禁用此选项。无法更改此应用的价值。

5 个答案:

答案 0 :(得分:9)

您可以通过编程方式取消设置。您需要在设备所有者应用程序中调用此功能

DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);

dpm.clearDeviceOwnerApp(context.getPackageName());

了解更多信息see

答案 1 :(得分:4)

您可以使用以下ADB shell命令删除设备所有者

adb shell dpm remove-active-admin ComponentInfo{}

禁用活动管理员,管理员必须在其清单中的应用程序中声明了android:testOnly。这也将删除设备和个人资料所有者

答案 2 :(得分:2)

通过在AndroidManifest.xml中指定android:testOnly =“ true”属性,可以使用以下方法卸载应用程序或删除管理员:

adb shell dpm remove-active-admin package.name/MyDeviceAdminReceiver

但是在生产设备上,应删除此属性,以便该应用程序成为非测试管理员。从那时起,如果不清除擦除/恢复出厂设置,将无法删除它或卸载应用程序。同样重要的是要记住,如果您是通过Android Studio构建的应用,则将使用Android的默认密钥对其进行签名,并且该应用将成为非测试管理员。一段时间后,如果您想添加一些新功能,您将意识到无法安装新版本。值得庆幸的是,当版本代码等于或大于以下版本时,使用相同的密钥对应用程序进行签名即可完成更新:

adb install -r path/to/kiosk.apk

如果您想摆脱生产设备上的管理员和应用程序,则必须进行一些新的更改来重新安装它。首先,如果您在device_admin_receiver.xml中具有<wipe-data \>的权限,则可以通过编程方式擦除数据:

devicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA)

如果您没有此权限,则不应使用以下命令启动新版本的LockTask并将其包从默认的“家庭应用”列表中删除:

devicePolicyManager.clearPackagePersistentPreferredActivities(mAdminComponentName, packageName)

然后,您可以手动转到“设置”以执行擦除/恢复出厂设置。

在以下位置找到的信息:https://snow.dog/blog/kiosk-mode-android

答案 3 :(得分:0)

唯一的出路是闪存或恢复出厂设置。

答案 4 :(得分:-1)

fyi:adb shell dpm remove-active-admin仅可用于Android 7