删除设备所有者Android

时间:2018-08-02 05:32:01

标签: java android adb

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

我发现了以下激活设备所有者的方法

  1. QR码设置
  2. “ adb shell dpm set-device-owner”命令
  3. NFC设置

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

有两种删除设备所有者的方法

  1. 恢复出厂设置
  2. 第二步只能通过设备所有者的应用程序代码完成,如下所示

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

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

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