Широковещательный приемник не работает в oreo и pie Android

#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:

  1. Убедитесь, что вы зарегистрировали свой приемник в манифесте.
  2. Неявные широковещательные исключения обратитесь к этой ссылке, чтобы проверить, есть ли ваш неявный приемник в списке исключений или нет.
  3. если это не исключение, вы можете создать планировщик заданий или зарегистрировать свой приемник в самом коде.Вот хороший фрагмент, на который вы могли бы сослаться Пришло время попрощаться с вашими неявными широковещательными приемниками