我使用下面的代码将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..
我在googled上搜索并发现,DeviceAdminReceiver可以通过使用adb命令进行管理
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);
}
}我该怎么做?
发布于 2017-07-24 06:44:00
你不能只用代码来做。这些都是非常安全的设置。基本上,你是在要求比设备超级用户的用户更高的权限。如果是任何一件恶意软件可以使用它,它将永远不允许通过另一个渠道。这些代码只适用于您实际控制的设备,如报亭或公司拥有的设备。
(此外,如果您通过dpm将自己设置为设备策略所有者,则没有理由也将自己设置为管理员,所有者是更高级别的管理人员)。
https://stackoverflow.com/questions/45273739
复制相似问题