假设我想receiver
为我自己的小部件定义一个,并且我希望它org.test.mywidget.MY_ACTION
与系统广播一起处理我自己的广播APPWIDGET_xxx
,如果我希望它仅在从相同的应用程序包?我尝试了以下 XML 代码,但通过这种方式,该APPWIDGET_DELETE
操作不再传递给小部件提供程序:
<receiver
android:name="MyWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_widget_info" />
</receiver>
<receiver
android:name="MyWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE" />
</intent-filter>
</receiver>
上面的 XML 有我提到的问题(没有传递 DELETED 事件),而且对我来说似乎也不好,因为重新定义了接收器。所以我将所有内容压缩如下:
<receiver
android:name="MyWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_widget_info" />
</receiver>
这可行APPWIDGET_UPDATE
,APPWIDGET_DELETE
我自己的广播都已交付,但现在我有一个问题:现在其他应用程序是否能够将带有操作的广播意图交付org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE
给我的小部件,因为该android:exported
值true
默认设置为?也许我错过了一些与这个导出值相关的基本概念,所以如果你们中的一些人能让我更好地理解一切,我会很高兴:)