APPWIDGET_UPDATE Совместимость с Oreo

В манифесте приложения я подписан на этот широковещательный приемник

       <receiver
            android:name=".widget.MyWidgetProvider"
            android:label="@string/widget_label_big">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
                <action android:name="com.mydomain.action.UPDATE_WIDGET"/>
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/widget_info"/>
        </receiver>

APPWIDGET_UPDATE отсутствует в белом списке неявной широковещательной рассылки Android https://developer.android.com/guide/components/broadcast-exceptions

Это совместимо с Android O? Если нет, какое решение я могу принять, чтобы получить уведомление в APPWIDGET_UPDATE?


person Nicola De Fiorenze    schedule 30.07.2018    source источник
comment
когда вы отправляете широковещательную рассылку, вам нужно убедиться, что намерение является явным, чтобы работать с O.   -  person letsCode    schedule 30.07.2018
comment
Его может не быть в списке исключений, но он по-прежнему является официальным способом, используемым в документации. Похоже, вам нужно проверить, работает ли это все еще самостоятельно. Обязательно сообщите, получилось ли.   -  person Ch4t4r    schedule 30.07.2018


Ответы (2)


Если у вас возникли проблемы с получением ваших трансляций в Oreo и выше, при создании intent для sendBroadcast вы должны указать класс, который должен его обрабатывать, иначе он не сработает.

Пример:

Intent i = new Intent("com.mydomain.action.UPDATE_WIDGET");
i.setClass(context, MyWidgetProvider.class);
sendBroadcast(i);
person BrainCrash    schedule 11.09.2018

Этих действий нет в белом списке, но они не устарели, и виджеты отлично работают на API 26+. Кроме того, команда разработчиков Android добавила несколько новых API для работы с виджетами (взаимодействие с пользователем, например закрепление и т. д.).

person HeyAlex    schedule 30.07.2018