我正在使用以下代码将app设置为设备管理员
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminComponentName); // Here setting my receiver as device admin
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "You must enable device administration for certain features"
+ " of the app to function.");
startActivityForResult(intent, 50);
允许app成为device admin
后,我正在执行以下代码
devicePolicyManager.setSecureSetting(deviceAdminComponentName, Settings.Secure.INSTALL_NON_MARKET_APPS, "1");
这里它引发了我的错误
Admin component info {...} not set to profile owner..
我用Google搜索并发现可以使用以下adb命令将DeviceAdminReceiver
设为管理员
dpm set-device-owner com.yego.driverkiosk/.DeviceAdminMaker
它有效。但我希望它只能从代码中完成。
DeviceAdminReceiver
public class DeviceAdminMaker extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
// showToast(context, context.getString(R.string.admin_receiver_status_enabled));
}
@Override
public void onDisabled(Context context, Intent intent) {
//showToast(context, context.getString(R.string.admin_receiver_status_disabled));
}
@Override
public void onPasswordChanged(Context context, Intent intent) {
// showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
}
我该怎么做?
答案 0 :(得分:1)
您无法仅通过代码执行此操作。这些是非常安全的设置。基本上,您要求的权限高于设备超级用户权限的用户。如果任何恶意软件可以使用它,它将永远不会被允许通过另一个频道。这些代码仅用于您物理控制的设备,例如自助服务终端或公司拥有的设备。
(另外 - 如果您通过dpm将自己设置为设备策略所有者,那么没有理由让自己成为管理员,所有者是更高级别的管理员。)