你好,我想在应用程序启动时启动/激活设备管理员,而不使用Intent。现在我使用这个代码:
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, Global.mDeviceAdminSample);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"Additional text explaining why this needs to be added.");
startActivityForResult(intent, RESULT_ENABLE);
但我不想使用Intent。我想直接启动设备管理。
有人知道我该怎么做吗?
谢谢。
幸运的是如果没有用户交互,这是不可能的。用户必须在设置中将您的应用程序确认为设备管理员,这样您最多可以将用户导航到设置。
如果应用程序可以在没有用户交互的情况下激活设备管理员,这将是一个巨大的安全风险(设备管理员拥有相当大的权限(。
它可以通过以下方式实现:
1( 使用add shell命令:
adb shell dpm set-device-admin --user 0 com.mydeviceadmin/.deviceAdminReceiver
2( 程序化:
Runtime.getRuntime().exec("dpm set-device-admin --user 0 com.mydeviceadmin/.deviceAdminReceiver")
使用Android 6.0进行测试。不需要根。
David
Intent intent = new Intent(DevicePolicyManager. ACTION_ADD_DEVICE_ADMIN);
ComponentName compName = new ComponentName(getApplicationContext(), MyAdmin.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Bấm zô nút đồng ý(ACTIVE á)");
startActivityForResult(intent, RESULT_ENABLE);
=>我可以授予android 5.1权限,但不能在版本6.0及以上的上执行此操作