技术开发 频道

AppWidget开发简介

  3.4 AndroidManifest.xml

  第四步,在AndroidManifest.xml文件中注册名为MyWidgetProvider 的AppWidgetProvider类对象和自定义的Service:

<?xml version="1.0" encoding="utf-8"?>
<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对象,有兴趣的读者可以参考主屏源代码中的实现过程。

0
相关文章