删除设备所有者 Android

use*_*018 5 java android adb

我对 Java 和 Android 开发很陌生,有更多的 C++ 背景。我使用此问题作为指导创建了一个 Kiosk/COSU 应用程序。我使用将应用程序设置为设备管理员

adb shell dpm set-device-owner ...../.AppAdminReceiver
Run Code Online (Sandbox Code Playgroud)

我想禁用活动设备所有者而不将设备重置为出厂设置。我已经尝试以编程方式使用这样的问题 和其他一些问题,但它似乎不起作用。代码执行,但应用程序仍然是设备所有者。我还尝试添加android:testOnly="true"到 AndroidManifest.xml,然后使用此处adb shell dpm remove-active-admin ...../.AppAdminReceiver所示的内容,但出现错误

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

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

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

Mil*_*wad 5

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

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

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

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

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

    DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    devicePolicyManager.clearDeviceOwnerApp(this.getPackageName());
    
    Run Code Online (Sandbox Code Playgroud)

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

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


小智 0

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

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

  • 这是我首先尝试的事情之一。“停用”选项呈灰色。 (9认同)