boot_completed действие для регистрации программно, а не в манифесте

Я пытался программно зарегистрировать приемник для действийandroid.intent.action.BOOT_COMPLETED, т.е. давайте возьмем у меня класс приемника с именем BootReceiver, который расширяет BroadCastReceiver учебный класс.

Итак, в одном из моих занятий я написал этот код,

IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action.BOOT_COMPLETED");
        intentFilter.addAction("android.intent.action.PACKAGE_REPLACED");

        BootReceiver receiver = new BootReceiver();
        getApplicationContext().registerReceiver(receiver, intentFilter);

Я пытался выполнить как обновление приложения, так и действие boot_completed для одного и того же широковещательного приемника.

Итак, что я попробовал, я запустил активность с регистрацией вышеуказанного кода, а затем перезапустил устройство. Я не получал никакого обратного вызова в BootReceiver onReceive() метод.

Можно ли программно объявить получателя для действия boot_completed или необходимо объявить получателя в файле манифеста.

На самом деле мое требование состоит в том, чтобы программно объявить это.

Заранее спасибо.

1 ответ

Решение

Я пытался программно зарегистрировать получателя для actionandroid.intent.action.BOOT_COMPLETED

Тем временем registerReceiver() называется, загрузка уже давно произошла. Единственное место для регистрации android.intent.action.BOOT_COMPLETED находится в манифесте, так как он может зарегистрировать интерес к широковещанию, даже если у вас нет запущенного процесса.

Можно ли программно объявить получателя для действия boot_completed

Вы можете запросить это, но это никогда не сработает.

нужно ли указывать получателя в файле манифеста

Если вы хотите, чтобы один работал, да.

Другие вопросы по тегам