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

Kus*_*gla 6 android adb device-policy-manager

我使用ADB创建了一个应用设备所有者,请点击此链接: 如何使我的应用成为设备所有者?

但是现在,我无法恢复这个.

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

Mus*_*ani 11

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

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

dpm.clearDeviceOwnerApp(context.getPackageName());
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅

  • **此方法在API级别26中已弃用.**[Android Docs](https://developer.android.com/reference/android/app/admin/DevicePolicyManager#clearDeviceOwnerApp%28java.lang.String%29) (5认同)

nil*_*lsi 8

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

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并使用以下命令从默认的“家庭”应用列表中删除其包:

devicePolicyManager.clearPackagePersistentPreferredActivities(adminComponentName, packageName)

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

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


小智 5

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

adb shell dpm remove-active-admin ComponentInfo{}
Run Code Online (Sandbox Code Playgroud)

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

  • 仅供参考:“adb shell dpm remove-active-admin”仅适用于 Android 7 (3认同)

小智 1

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