【问题标题】:Remove Device Owner Android删除设备所有者 Android
【发布时间】:2018-08-02 05:32:00
【问题描述】:

我是来自更多 c++ 背景的 Java 和 Android 开发新手。我使用this question 作为指导创建了一个 Kiosk/COSU 应用程序。我使用

将应用设置为设备管理员
adb shell dpm set-device-owner ...../.AppAdminReceiver

我想在不将设备恢复出厂设置的情况下禁用活跃的设备所有者。我已经尝试以编程方式使用this之类的问题 和其他一些,但它似乎不起作用。代码执行,但应用程序仍然是设备所有者。我也尝试将android:testOnly="true" 添加到AndroidManifest.xml,然后使用adb shell dpm remove-active-admin ...../.AppAdminReceiver,如here 所示,但出现错误

java.lang.SecurityException: Attempt to remove non-test admin ComponentInfo{....AppAdminReceiver} 0

上一个链接中描述的方法似乎在我正在为其构建应用程序的操作系统 Android Oreo 中已弃用。

如何在 Oreo 中删除设备所有者?我不介意是通过 adb 还是以编程方式完成,只要我不需要将设备恢复出厂设置即可。

【问题讨论】:

  • 设备所有者和设备管理员是两个不同的东西。 AFAIK 设备所有者只能在出厂重置设备上设置。设备管理员可以在设置中删除。如果要取消设备管理员,则需要将手机恢复出厂设置。除非手机已经root(我认为)
  • 如果我对它是设备所有者和设备管理员有歧义,我深表歉意。我在问题中使用的命令似乎表明该应用程序被设置为设备所有者。但是,我能够通过 Android Studio 终端使用 adb 执行此命令,而不是设置为出厂重置。作为设备所有者,我还有什么可以尝试删除该应用程序的吗?我还更新了我的问题以使用设备所有者而不是管理员。
  • @KrzysztofKubicki 是的,我有。如上所述,它执行但似乎没有触发任何东西。似乎这在 API 26 中已被弃用。

标签: java android adb


【解决方案1】:

我找到了以下激活设备所有者的方法

  1. 二维码配置
  2. “adb shell dpm set-device-owner”命令
  3. NFC 配置

激活设备所有者后,您将无法从设置中将其停用。

有两种方法可以删除设备所有者

  1. 恢复出厂设置
  2. 第二个只能从设备所有者应用程序代码中完成,如下

    DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    devicePolicyManager.clearDeviceOwnerApp(this.getPackageName());
    

我在应用程序中创建了一个隐藏选项来运行它。

**请注意,如果要添加此代码并运行应用程序以删除所有者权限,应用程序应使用相同的密钥进行签名。

【讨论】:

    【解决方案2】:

    您可以在设置中执行此操作。只需打开设置并在搜索框中输入“admin”。然后选择“设备管理应用”,点击您的应用并“停用此设备管理应用”

    该页面的替代方式可能是应用程序和通知 -> 向下滚动并选择高级 -> 特殊应用程序访问 -> 设备管理应用程序

    【讨论】:

    • 这是我尝试的第一件事。 “停用”选项显示为灰色。
    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2013-12-20
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多