【问题标题】:Programmatically set package as device owner以编程方式将包设置为设备所有者
【发布时间】:2018-10-14 01:10:44
【问题描述】:

我知道命令"adb shell dpm set-device-owner pacakgename"

我想知道是否有办法在一个应用启动后以编程方式询问和设置设备所有者

基本上是相反的:

DevicePolicyManager.clearDeviceOwnerApp("com.package.something");

提前致谢!

【问题讨论】:

    标签: android administrator owner


    【解决方案1】:

    我最近遇到了这个问题,我无法通过 adb 设置设备管理员,经过一番折腾后,我找到了一种在 Android 9 上执行此操作的方法(它也可能适用于较低版本)。 我用的手机是小米MIX 3

    1. 恢复出厂设置
    2. 获得开发者选项的访问权限
    3. 在开发者选项中开启USB调试,此时系统会要求您登录用户帐户,执行此操作。
    4. 在开发者选项中打开 USB 调试(安全设置)
    5. 在开发者选项中关闭通知高风险功能
    6. 现在在设置中转到帐户选项卡并注销/删除之前添加的帐户。
    7. 将手机插入电脑,授予调试权限
    8. 问题adb shell dpm set-active-admin --user current package_name/device_admin_receiver
    9. adb shell dpm set-device-owner --user current package_name/device_admin_receiver

    【讨论】:

      【解决方案2】:

      如果设备上没有用户帐户,或者设备已root,您只能设置设备所有者。这通常意味着您只能在恢复出厂设置后立即设置设备所有者。您可以使用 NFC 配置(我从未这样做过)或在 adb shell 中设置设备所有者。 adb 方法需要用户开启开发者模式,将安卓设备连接到电脑,然后在 shell 中输入命令。

      成为设备所有者的伪代码:

      if the app is not the device owner
        if there is a user account
          inform the user that the app cannot become the device owner
        else if the app is a device administrator
          instruct the user to run the adb command
        else
          request to become a device administrator
      

      我的Device Owner 应用程序是一个完整的工作示例,包括如何从应用程序的包名称生成用户必须键入的命令。

      【讨论】:

      • 但是要启用开发者模式,您必须首先在出厂重置后进行初始设备设置,并且该设置的一部分是指定一个用户帐户,该用户帐户会在设置完成后自动成为所有者。至少在 Android 8.1 上。
      • @astralmaster 在 6.x 上,您可以跳过设置用户帐户。
      • 是肯定的,但由于 OP 没有指定确切的 Android 版本,我认为让其他人知道在以后的版本中使用adb 设置设备所有者是不可能的。正确的方法是使用 NFC 或 QR 码配置。
      猜你喜欢
      • 2019-05-21
      • 2021-11-10
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 2010-11-13
      • 2010-11-19
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多