如何将附加内容传递给DeviceAdminReceiver?

时间:2018-05-13 23:17:38

标签: android device-admin

我使用以下代码成功激活设备管理员。

public static void goToActivateDeviceAdmin(Context context, ComponentName admin)
{
    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, admin);
    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, Html.fromHtml(context.getString(R.string.admin_explain)));
    intent.putExtra("lock", true); // TODO cannot pass custom extras
    context.startActivity(intent);
}

DeviceAdminReceiver的代码:

    public static class AdminReceiver extends DeviceAdminReceiver
{
    @Override
    public void onEnabled(Context context, Intent intent)
    {
        if (intent.getBooleanExtra("lock", false)) // TODO cannot receive extra
            ((DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE)).lockNow();
    }
}

在接收器中,我希望锁定额外得到真实,但它总是错误的。那么如何将自定义附加功能传递给DeviceAdminReceiver呢?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE传递包含您的值的PersistableBundle。

然后,您可以在DeviceAdminReceiver的子类的onProfileProvisioningComplete(context:Context,intent:Intent)中获取此值

答案 1 :(得分:0)

  

在接收器中,我希望锁定额外得到真实,但它始终是假的。

您将额外费用放在启动活动的Intent上。这不会转移到任意其他Intent个对象。

  

那么如何将自定义附加内容传递给DeviceAdminReceiver?

你不能。您需要以其他方式解决问题(例如SharedPreferences)。