在测试CTS Verifier 中Device Owner Test 的时候报错:
$ adb shell dpm set-device-owner 'com.android.cts.emptydeviceowner/.EmptyDeviceAdmin'
$ adb shell dpm set-device-owner 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver'
java.lang.IllegalStateException: Trying to set the device owner, but device owner is already set.
at android.os.Parcel.createException(Parcel.java:1958)
at android.os.Parcel.readException(Parcel.java:1918)
at android.os.Parcel.readException(Parcel.java:1868)
at android.app.admin.IDevicePolicyManager$Stub$Proxy.setDeviceOwner(IDevicePolicyManager.java:5863)
at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:176)
at com.android.commands.dpm.Dpm.onRun(Dpm.java:106)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:54)
at com.android.commands.dpm.Dpm.main(Dpm.java:41)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:351)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.devicepolicy.DevicePolicyManagerService.enforceCanSetDeviceOwnerLocked(DevicePolicyManagerService.java:7881)
at com.android.server.devicepolicy.DevicePolicyManagerService.setDeviceOwner(DevicePolicyManagerService.java:7187)
at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:1095)
at android.os.Binder.execTransact(Binder.java:756)
解决方法:移除admin
$ adb shell dpm remove-active-admin 'com.android.cts.emptydeviceowner/.EmptyDeviceAdmin'
$ adb shell dpm remove-active-admin 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver'
推荐一个脚本:
runDevice.sh
#!/bin/sh
echo "use it by : runDevice.sh -s series_number & runDevice.sh"
adb_options=" "
if [ "$1" = "-s" ]; then
adb_options=""$1" "$2""
fi
#adb $adb_options shell dpm remove-active-admin 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver'
#adb $adb_options shell dpm set-device-owner 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver'
#adb $adb_options shell dpm remove-active-admin 'com.android.cts.emptydeviceowner/.EmptyDeviceAdmin'
adb $adb_options shell dpm set-device-owner 'com.android.cts.emptydeviceowner/.EmptyDeviceAdmin'