3.4 AndroidManifest.xml
第四步,在AndroidManifest.xml文件中注册名为MyWidgetProvider 的AppWidgetProvider类对象和自定义的Service:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.MyAppWidget"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="MyWidgetProvider">
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/mywidget_info" />
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="com.OPhone.update"/>
</intent-filter>
</receiver>
<service android:name=".MyWidgetProvider$UpdateService" >
</service>
</application>
</manifest>
其中,android:name属性值“MyWidgetProvider”是AppWidgetProvider的名字,meta-data标签的android:name属性指定了数据类型是“android.appwidget.provider”,而android:resource属性指定了AppWidgetProviderInfo信息的存储资源是mywidget_info.xml.在intent-fliter标签中,我们指定该 AppWidgetProvider接受的通知的Action类型。
3.5运行
运行该工程后,我们通过主屏上的长按响应,选择“外部工具”,添加“AppWidget示例”。在主屏上得到的AppWidget如下图所示:

图下方的蓝色图标及旁边显示的数字及为我们在主屏添加的AppWidget。用户可以随意的拖动,并可以添加多个该类对象。在用户添加多个对象时,每个对象的显示内容都一致,并且只有在用户点击蓝色图标时,才会更新显示的CPU耗用值。
观察程序的log,我们可以发现AppWidget虽然在主屏上显示,但它和主屏却运行在两个不同的进程中。
4.结束语
AppWidget为开发者提供了一种让一个应用显示在另一个应用中的方法。因为主屏使用了AppWidgetHost这个类,因而,在默认情况下,我们编写的AppWidget都会添加到主屏上。如果开发者想在自己编写的应用中添加AppWidget,则还需要实现自定义的 AppWidgetHostView对象,有兴趣的读者可以参考主屏源代码中的实现过程。