我在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还是以编程方式完成的,只要我不需要将设备恢复出厂设置即可。
答案 0 :(得分:0)
您可以在设置中进行操作。只需打开设置,然后在搜索框中输入“ admin”即可。然后选择“设备管理员应用”,单击您的应用,然后“停用此设备管理员应用”
该页面的另一种方式可能是应用程序和通知->向下滚动并选择高级->特殊应用程序访问->设备管理应用程序
答案 1 :(得分:-1)
我发现了以下激活设备所有者的方法
激活设备所有者后,将无法从设置中停用它。
有两种删除设备所有者的方法
第二步只能通过设备所有者的应用程序代码完成,如下所示
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyManager.clearDeviceOwnerApp(this.getPackageName());
我已经在应用程序中创建了一个隐藏选项来运行它。
**请注意,如果要添加此代码并运行应用程序以删除所有者特权,则应使用相同的密钥对应用程序进行签名。