设备所有者未在Android M上清除

时间:2019-03-01 16:20:31

标签: android adb device-owner

我编写了一个设备拥有者信息亭应用程序,该应用程序想删除该设备拥有者的状态,以便我可以将其卸载而不必恢复设备的出厂设置。以下内容适用于Nougat和Oreo,但不适用于棉花糖(适用于Samsung平板电脑)。

  

我如何编码设备所有者的东西的细节:

要将应用设置为设备所有者,我在安装应用后运行以下adb shell命令:

adb shell dpm set-device-owner com.dps.myapp/.DeviceAdminReceiver

然后,当我尝试删除设备所有者状态并卸载应用程序时,我正在运行以下Shell命令:

adb shell am force-stop com.dps.myapp
adb shell am start -n com.dps.myapp/.DeactivateDeviceOwnerActivity
adb shell pm uninstall com.dps.myapp

DeactivateDeviceOwnerActivity是我的应用程序中的一个活动,其中包含以下代码以清除设备所有者的状态:

DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDevicePolicyManager.clearDeviceOwnerApp(getApplicationContext().getPackageName());
if (mDevicePolicyManager.isDeviceOwnerApp(getApplicationContext().getPackageName())) {
    Toast.makeText(getApplicationContext(),
        "Failure! App is still device owner.",Toast.LENGTH_LONG)
                        .show();
 }
 else {
    Toast.makeText(getApplicationContext(),
        "Success!", Toast.LENGTH_LONG).show();
 }

奇怪的是,我的活动显示的是Totclear,该Toast是clearDeviceOwnerApp调用起作用的,但是当我在此之后立即运行卸载命令时,却收到“ Failure [DELETE_FAILED_DEVICE_POLICY_MANAGER]”返回,因此显然设备所有者是没有为我的应用清除。

有人知道棉花糖和后续API之间的具体区别吗,关于设备所有权或DevicePolicyManager会导致在Nougat和Oreo上运行的此代码在棉花糖上不起作用?当我发出启动命令让DeactivateDeviceOwnerActivity清除设备所有者时,我在系统日志中查找,但未看到任何指示任何异常发生的信息。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

我还没有遇到过棉花糖这样的问题。

这很奇怪,尽管我无法给出答案,但我会提出一些建议

1)这可能是一个错误。因此,您可以将设备恢复出厂设置,然后重试。

2)使用模拟器进行此类测试非常方便,因为您可以轻松地删除并创建一个新的测试。

希望对您有帮助。