#android #broadcastreceiver #android-8.0-oreo #android-9.0-pie
#Android #broadcastreceiver #android-8.0-oreo #android-9.0-pie
Вопрос:
Загрузочный широковещательный приемник не работает, и в onReceive () ничего нет
public class BootReceived extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();
Log.d("IfWalaBooot", intent.getAction());
Intent intent1 = new Intent(context, MainActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
Intent tni = new Intent(context, MainService.class);
tni.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(tni);
}
}
Комментарии:
1. Вы зарегистрировались в манифесте
2. @Pooja когда вы говорите, что bootreceiver не работает, означает ли это, что [1] загрузка завершена, но вы не можете запустить службу, или [2] вы не получаете событие завершения загрузки? Начиная с Android-O, существует ограничение на неявные трансляции. developer.android.com/guide/components/broadcasts#android_80
3. @Manoj Perumarath я зарегистрировался как в манифесте, так и в основной активности, но ничего не запускается
4. @Ranjan Kumar я не получаю событие завершения загрузки
5. Вам нужно зарегистрировать его в OnStart и отменить регистрацию в onDestroy.
Ответ №1:
- Убедитесь, что вы зарегистрировали свой приемник в манифесте.
- Неявные широковещательные исключения обратитесь к этой ссылке, чтобы проверить, есть ли ваш неявный приемник в списке исключений или нет.
- если это не исключение, вы можете создать планировщик заданий или зарегистрировать свой приемник в самом коде.Вот хороший фрагмент, на который вы могли бы сослаться Пришло время попрощаться с вашими неявными широковещательными приемниками