在app清单中,我订阅了这个广播接收器
<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?
这些操作不在白名单中,但它没有被弃用,小部件在api 26+上运行正常。此外,android开发团队为使用小部件添加了一些新的api(与用户交互,如固定等)
如果您在Oreo及以上时无法接收广播,在为intent
创建sendBroadcast
时,您必须指定必须处理它的类,否则它将不会触发。
例:
Intent i = new Intent("com.mydomain.action.UPDATE_WIDGET");
i.setClass(context, MyWidgetProvider.class);
sendBroadcast(i);