Runtime.getRuntime()。exec(" dpm set-device-owner com.integral.kiosk.kioskapp / .receivers.MyDeviceAdminReceiver");
未在Android模拟器Nexus 6 OS Android 8中设置设备所有者。 但是当使用adb shell命令时它工作正常。
附上我在oncreate函数中使用的代码。
ComponentName deviceAdmin = new ComponentName(this, MyDeviceAdminReceiver.class);
if (!mDevicePolicyManager.isAdminActive(deviceAdmin)) {
Toast.makeText(this, "Not Device Admin", Toast.LENGTH_SHORT).show();
Intent activateDeviceAdmin = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
activateDeviceAdmin.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin
);
activateDeviceAdmin
.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "After activating admin, you will be able to block application uninstallation.”");
startActivityForResult(activateDeviceAdmin,
PM_ACTIVATION_REQUEST_CODE);
}
if (mDevicePolicyManager.isDeviceOwnerApp(getPackageName())) {
mDevicePolicyManager.setLockTaskPackages(deviceAdmin, new String[]{getPackageName()});
Toast.makeText(this, "Device Owner", Toast.LENGTH_SHORT).show();
// startLockTask();
mDevicePolicyManager.clearDeviceOwnerApp(getPackageName());
} else {
Toast.makeText(this, "Not Device Owner", Toast.LENGTH_SHORT).show();
try {
Runtime.getRuntime().exec("dpm set-device-owner com.integral.kiosk.kioskapp/.receivers.MyDeviceAdminReceiver");
} catch (IOException e) {
e.printStackTrace();
}
请帮忙。 提前致谢
答案 0 :(得分:0)
尝试删除所有"添加设备管理员"代码,第一个if语句块中的所有内容。自Lollipop以来,每个Android版本都弃用了越来越多的设备管理员API。您的应用只需要是设备所有者。一旦它成为设备所有者,就无法卸载它,您可以设置锁定的任务,例如它自己。