我通过以下链接使用 ADB 创建了应用设备所有者: 如何使我的应用成为设备所有者?
但现在,我无法恢复这一点。
在设备管理选项卡中,此选项被禁用。无法更改此应用程序的值。
通过在 中指定android:testOnly="true"
属性,AndroidManifest.xml
可以使用以下命令卸载应用程序或删除管理员:
adb shell dpm remove-active-admin package.name/MyDeviceAdminReceiver
但在生产设备上,不应包含此属性,并且应用程序将是非测试管理员。从那时起,如果没有擦除/恢复出厂设置,就无法将其删除或卸载应用程序。
值得庆幸的是,当应用程序使用相同的密钥签名并且版本代码相等或更高时,可以完成更新:
adb install -r path/to/kiosk.apk
如果您想以编程方式摆脱生产设备上的管理员和应用程序,您必须重新安装它并进行一些新的更改。首先,如果您 <wipe-data \>
在 device_admin_receiver.xml 中具有以下权限,则可以以编程方式擦除数据:
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());
有关更多信息,请参阅
更新:此方法在 API 级别 26 中已弃用
您可以使用以下 ADB shell 命令删除设备所有者
adb shell dpm remove-active-admin ComponentInfo{}
禁用活动管理员,管理员必须在其清单中的应用程序中声明 android:testOnly。这还将删除设备和个人资料所有者
唯一的出路是刷机或恢复出厂设置。
仅供参考:adb shell dpm remove-active-admin
仅适用于 Android 7
这太疯狂了。我已经能够永远删除我的 S7 和 S5 上的设备管理员(卸载或禁用)。我不明白为什么我无法禁用/删除 Package Disabler 应用程序,因为我的 S10 w/OS 11 上出现故障。
当然有办法通过亚行删除它?我通过亚行添加了它。
我希望人们会写出完整的说明,并警告您在安装后如果不恢复出厂设置将无法删除它!(我所有的应用程序 + 数据丢失!)
嗯...请为股票非root用户提供解决方案:D谢谢!