所以,直到现在我一直在我的onEnabled()
中快速覆盖AppWidgetProvider
,虽然也调用了super()
,以便在放置第一个小部件时做一些事情(例如之后)重新启动...就像为所有小部件重新设置重复警报一样)。
显然,它工作得很好。我还要覆盖onReceive()
以便我可以捕获某些其他广播,并且在那里我可以记录我正在接收的广播,其中一个是APPWIDGET_ENABLED
,它被发送到{{1}据我所知。
所以,一切都很好。但...
在检查我的onEnabled()
文件时,我注意到我在AndroidManifest.xml
中注册了一些操作,例如:
<intent-filter>
但是有一个明显的遗漏如下:
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
... (others) ...
</intent-filter>
我不在我的Manifest(目前)中有上述内容。
那么,实际上是否有必要在Manifest中注册<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
?像this这样的帖子表明它是。另一方面,我确定我已经读过某个地方,这个动作是自动收到的。事实上我的APPWIDGET_ENABLED
方法正在记录我onReceive()
收到的信息,尽管它不在清单中。
也许实施可能会因Android版本,甚至是设备而异,因此在某些设备AppWidgetProvider
会自动收到,而其他设备则不会收到?
答案 0 :(得分:0)
为了创建一个小部件,你需要的是AppWidgetProviderInfo对象,你将在一个单独的小部件XML文件中定义。在那个时候只创建小部件,你需要在manifest xml文件中声明它。
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>