【问题标题】:How to remove set-device-owner in Android DPM?如何在 Android DPM 中删除 set-device-owner?
【发布时间】:2018-03-06 10:12:13
【问题描述】:

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

但现在,我无法恢复它。

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

【问题讨论】:

    标签: android adb device-policy-manager


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      更多信息see

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

      【讨论】:

      • 此方法在 API 级别 26 中已弃用。 Android Docs
      • 我无法重新启动应用程序,因为引用“应用程序已在运行”,我无法停止或重新安装
      【解决方案3】:

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

      adb shell dpm remove-active-admin ComponentInfo{}
      

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

      【讨论】:

      • 只要活动的管理应用在其 AndroidManifest.xml 中没有 android:testOnly="false" 就可以工作。否则,Android(至少 6.0)会变得暴躁并拒绝做它要求的事情。
      • 仅供参考:adb shell dpm remove-active-admin 仅适用于 Android 7
      【解决方案4】:

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

      【讨论】:

      • 以上链接用于移除设备管理员而非设备所有者。如果设备所有者处于活动状态,则无法删除设备管理员。请在否决答案之前了解您的事实
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        肯定有办法通过 ADB 将其删除吗? 我是通过亚行添加的。

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

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

        【讨论】:

        • 为什么我需要“50”声望才能评论别人的回复? Stack Overflow 管理员肯定希望事情井井有条吗?啊。这是错误的网站。
        猜你喜欢
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 2015-07-01
        • 1970-01-01
        • 2021-06-28
        • 2015-09-11
        • 1970-01-01
        相关资源
        最近更新 更多