Android:Manifest中需要APPWIDGET_ENABLED

时间:2016-01-19 09:39:49

标签: android android-manifest android-appwidget appwidgetprovider

所以,直到现在我一直在我的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会自动收到,而其他设备则不会收到?

1 个答案:

答案 0 :(得分:0)

为了创建一个小部件,你需要的是AppWidgetProviderInfo对象,你将在一个单独的小部件XML文件中定义。在那个时候只创建小部件,你需要在manifest xml文件中声明它。

 <intent-filter>
         <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
      </intent-filter>