【发布时间】:2018-03-06 10:12:13
【问题描述】:
我通过以下链接使用 ADB 创建了应用设备所有者: How to make my app a device owner?
但现在,我无法恢复它。
在设备管理选项卡中,此选项被禁用。无法更改此应用的值。
【问题讨论】:
标签: android adb device-policy-manager
我通过以下链接使用 ADB 创建了应用设备所有者: How to make my app a device owner?
但现在,我无法恢复它。
在设备管理选项卡中,此选项被禁用。无法更改此应用的值。
【问题讨论】:
标签: android adb device-policy-manager
通过在AndroidManifest.xml 中指定android:testOnly="true" 属性,可以卸载应用程序或删除管理员:
adb shell dpm remove-active-admin package.name/MyDeviceAdminReceiver
但在生产设备上,不应包含此属性,并且该应用将是非测试管理员。从那时起,除非擦除/恢复出厂设置,否则将无法将其删除或卸载应用程序。
值得庆幸的是,当应用使用相同的密钥签名并且版本代码相同或更高时,可以完成更新:
adb install -r path/to/kiosk.apk
如果您想以编程方式摆脱生产设备上的管理员和应用程序,您必须重新安装它并进行一些新的更改。首先,如果您在 device_admin_receiver.xml 中拥有 <wipe-data \> 权限,则可以通过以下方式以编程方式擦除数据:
devicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA)
如果您没有此权限,则新版本不应启动 LockTask 并将其包从默认 Home 应用列表中删除:
devicePolicyManager.clearPackagePersistentPreferredActivities(adminComponentName, packageName)
然后您可以手动转到“设置”以执行擦除/恢复出厂设置。
【讨论】:
您可以通过编程方式取消设置。您需要在设备所有者应用程序中调用此函数
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
dpm.clearDeviceOwnerApp(context.getPackageName());
更多信息see
更新:此方法在 API 级别 26 中已弃用
【讨论】:
您可以使用以下 ADB shell 命令删除设备所有者
adb shell dpm remove-active-admin ComponentInfo{}
禁用活动管理员,管理员必须在其清单中的应用程序中声明 android:testOnly。这也会移除设备和个人资料所有者
【讨论】:
adb shell dpm remove-active-admin 仅适用于 Android 7
唯一的出路是刷机或恢复出厂设置。
【讨论】:
仅供参考:adb shell dpm remove-active-admin 仅适用于 Android 7
【讨论】:
这太疯狂了。我已经能够永远删除我的 S7 和 S5 上的设备管理员(卸载或禁用)。 我不明白为什么我无法禁用/删除 Package Disabler 应用程序,因为我的 S10 w/OS 11 出现故障。
肯定有办法通过 ADB 将其删除吗? 我是通过亚行添加的。
我希望人们会写出完整的说明,并警告您在安装后如果不恢复出厂设置将无法删除它! (我所有的应用程序 + 数据都丢失了!)
嗯...请为普通非 root 用户提供解决方案:D 谢谢!
【讨论】: