Как передать дополнения в DeviceAdminReceiver? - PullRequest
0 голосов
/ 14 мая 2018

Я использую следующий код для успешной активации администратора устройства.

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();
    }
}

В приемнике я ожидаю получить значение true для дополнительной блокировки,но это всегда ложьИтак, как я могу передать пользовательские дополнения в DeviceAdminReceiver?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вы можете использовать DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE, передавая PersistableBundle, содержащий ваше значение.

Затем вы можете принять это значение в onProfileProvisioningComplete (context: Context, intent: Intent) подкласса DeviceAdminReceiver

0 голосов
/ 14 мая 2018

В приемнике я ожидаю получить значение true для дополнительной блокировки, но всегда ложно.

Вы добавляете эту дополнительную сумму к Intent, который запускает действие.Это не будет передано другим произвольным Intent объектам.

Так как я могу передать пользовательские дополнения в DeviceAdminReceiver?

Вы не можете.Вам нужно будет решить свою проблему другим способом (например, SharedPreferences).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...