14

我通过以下链接使用 ADB 创建了应用设备所有者: 如何使我的应用成为设备所有者?

但现在,我无法恢复这一点。

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

4

6 回答 6

29

通过在 中指定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)

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

在https://snow.dog/blog/kiosk-mode-android上找到的信息

于 2018-11-13T22:33:55.667 回答
15

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

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

dpm.clearDeviceOwnerApp(context.getPackageName());

有关更多信息,请参阅

更新:此方法在 API 级别 26 中已弃用

于 2018-05-14T07:22:06.443 回答
5

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

adb shell dpm remove-active-admin ComponentInfo{}

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

于 2018-05-22T06:30:54.630 回答
1

唯一的出路是刷机或恢复出厂设置。

于 2018-03-13T10:16:45.307 回答
1

仅供参考:adb shell dpm remove-active-admin仅适用于 Android 7

于 2020-04-07T21:50:47.203 回答
0

这太疯狂了。我已经能够永远删除我的 S7 和 S5 上的设备管理员(卸载或禁用)。我不明白为什么我无法禁用/删除 Package Disabler 应用程序,因为我的 S10 w/OS 11 上出现故障。

当然有办法通过亚行删除它?我通过亚行添加了它。

我希望人们会写出完整的说明,并警告您在安装后如果不恢复出厂设置将无法删除它!(我所有的应用程序 + 数据丢失!)

嗯...为股票非root用户提供解决方案:D谢谢!

于 2022-02-07T06:47:27.523 回答