java - 删除设备所有者 Android

标签 java android adb

我在 Java 和 Android 开发方面还很陌生,我有更多的 C++ 背景。我使用 this question 创建了一个 Kiosk/COSU 应用程序作为指导。我使用

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

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

java.lang.SecurityException:尝试删除非测试管理员 ComponentInfo{....AppAdminReceiver} 0

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

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

最佳答案

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

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

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

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

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

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

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

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

关于java - 删除设备所有者 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51646153/

相关文章:

tcp - 通过 TCP WiFi 在 25 台设备上连接并运行 adb 命令,而无需连接任何 USB

Android 设备在 Ubuntu 13.04 中未在线显示

java - JWS 中 Java 的两个副本

java - 如何在 java 中使用 wkhtmltopdf 将 pdf 导出到 OutputStream

java - 当 wait() 不可用时节省 CPU

java - 从 JDBC 调用 HSQL 函数

android - 为什么我的应用程序从本地化资源中获取了错误的字符串?

android - UnsatisfiedLinkError Arcgis 10.2.3 Android ArcGISRuntime.setClientId

java - 如何使用像素着色器实现流畅的文字?

android - 运行 ADB 命令的 Bash 脚本不会遍历设备列表