編輯:高級開發
首先我們需要在androidmanifest.XML文件中加入receiver節點來接收系統廣播,聲明BroadcastReceiver類的方法可以直接使用intent filter來過濾系統信息,下面來自SDK中的寫法。
<receiver android:name="TestAppWidgetProvider" android:label="@string/cwj" android:icon="@drawable/smart_icon">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> //這裡我們需要捕獲的是APPWIDGET_UPDATE這個動作
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@XML/appwidget_info" /> //定義meta數據,見下面的appwidget-provider
</receiver>
我們定一個AppWidgetProviderInfo 結構,用來描述這個widget的外觀,這裡和layout的布局有些相似,可以設置最小的寬度為40dp,最小高度為30dp。
<appwidget-provider XMLns:android="http://schemas.android.com/apk/res/android" android:minWidth="40dp"
android:minHeight="30dp"
android:updatePeriodMillis="86400000" //回調Timer,單位為毫秒。這裡是1天=60X60X24X1000,android手機的電能有限,頻率不能太高,最好讓用戶自己控制
android:initialLayout="@layout/test_appwidget" //初始化時的主要布局
android:configure="com.android.tests.appwidgethost.TestAppWidgetConfigure" >
</appwidget-provider>
在Widget中主要使用AppWidgetProvider做基類,剛才我們定義的BroadcastReceiver主要是更新動作ACTION_APPWIDGET_UPDATE ,與此之外還有ACTION_APPWIDGET_DELETED、ACTION_APPWIDGET_ENABLED和ACTION_APPWIDGET_DISABLED分別表示刪除是、啟用和禁用時觸發的事件,這裡是系統廣播。我們通過 BroadcastReceiver類的onReceive方法來捕獲。
下面的Java廣播動作獲取代碼如下:
public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); //獲取當前的動作
if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) { //如果是ACTION_APPWIDGET_UPDATE動作則
Bundle extras = intent.getExtras();
if (extras != null) {
int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if (appWidgetIds != null && appWidgetIds.length > 0) {
this.onUpdate(context, AppWidgetManager.getInstance(context), appWidgetIds);
}
}
}
else if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) { //動作2
Bundle extras = intent.getExtras();
if (extras != null) {
int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if (appWidgetIds != null && appWidgetIds.length > 0) {
this.onDeleted(context, appWidgetIds);
}
}
}
else if (AppWidgetManager.ACTION_APPWIDGET_ENABLED.equals(action)) { //動作3
this.onEnabled(context);
}
else if (AppWidgetManager.ACTION_APPWIDGET_DISABLED.equals(action)) { //動作4
this.onDisabled(context);
}
}
本文我們主要簡單的講述下android平台Widget的框架,以後我們將會通過實際的例子來講解,我們看到這裡的widget和常見的iphone上dashboard等w3c使用Html+JS以AJax方式的小工具不太一樣,不過整體開發起來比android標准的程序更簡單,主要是考慮ui的繪制以及網絡通訊,推薦大家多看看apache通訊類。
Google不做惡,蘋果要作惡?其實刪掉競爭對手的描述,其實也是一種合理的商業手段。只是這樣的要求,顯得蘋果有些不厚道,不知道Google怎麼反擊。iPad的發布,在5
51CTO曾介紹android開發WebVIEw組件的使用詳解,本文將為各位詳細介紹android NDK的安裝、使用和實戰。我下載的是android Native D
由於目前基於android的手機價格比較貴。如果只是為了體驗android,花幾千元買個手機也不值得。不過幸好Google想到了這一點,剛剛推出了Android Li
android應用操作系統均采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分:低層以Linux核心工作為基礎,只提供基本功能,下文僅供