Может ли виджет домашнего экрана BroadcastReceiver прослушивать события телефона? - PullRequest
1 голос
/ 08 марта 2020

Я пытаюсь обновить свой виджет на домашнем экране при изменении «Не беспокоить». Поскольку WidgetProvider сам по себе является BroadcastReceiver, я подумал, что это будет просто. Но я не вижу тостов, когда я включаю или выключаю Dnd. Означает ли это, что WidgetProvider может только отправлять трансляции, но не получать их?

Вот мой код:

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        String action = intent.getAction();

        assert action != null;
        if (action.equals(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED)) {
            System.out.println("Success!");
        }
     }

1 Ответ

0 голосов
/ 08 марта 2020

Вы не показываете, как вы регистрируетесь для этой трансляции. Если он находится в манифесте, широковещательная рассылка, которую вы пытаетесь получить, не указана в неявной широковещательной исключительной ситуации «белый список» , поэтому вы можете не получить ее в Android 8.0+. Единственный способ получить эту трансляцию на Android 8.0+ - это если у вас постоянно запущена служба переднего плана, и это требует затрат.

Также:

  • Я не знаком с этой конкретной c трансляцией, и поэтому я не уверен, отправлена ​​ли она при изменении DND (хотя это, безусловно, кажется правдоподобным)

  • Вы не показывает Toast; вместо этого вы печатаете сообщение на стандартный вывод, который должен быть перенаправлен на Logcat по Android

...