APPWIDGET_UPDATE Oreo兼容性

时间:2018-07-30 16:03:43

标签: android broadcastreceiver android-8.0-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?

2 个答案:

答案 0 :(得分:0)

这些操作不在白名单中,但不建议弃用,并且小部件在api 26+上可以正常工作。此外,android开发团队还添加了一些用于处理小部件(与用户进行交互(例如固定等))的新api

答案 1 :(得分:0)

如果您在Oreo及更高版本中无法接收广播,则在为intent创建sendBroadcast时,必须指定必须处理的类,否则它将不会触发。

示例:

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