appwidget的使用方法和配置以及监听

1.这是继承AppwidgetProvider的类,主要包含5个主要方法。

View Code
package Wang.appwidget;

import android.app.Activity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RemoteViews;

public class AppwidgetActivity extends AppWidgetProvider{
//自定义的广播URI
private static final String UPDATE_ACTION="appwidget.UPDATE_APP_WIDGET";
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}

@Override
public void onDisabled(Context context) {
// TODO Auto-generated method stub
super.onDisabled(context);
}

@Override
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
}

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//接受广播
String gb=intent.getAction();
if(UPDATE_ACTION.equals(gb))
{
//RemoteViews是对appwidget内的所有控件进行管理
//第一个参数是上下文名字,第二个参数是appwidget的布局文件
RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.appwidget);
//为appwidget中的控件进行操作
remoteViews.setTextViewText(R.id.gbTextView, "来了广播");
//得到AppWidgetManager对象,主要是对appwidget进行系统的管理
AppWidgetManager appWidgetManager =AppWidgetManager.getInstance(context);
ComponentName componentName=new ComponentName(context,AppwidgetActivity.class);
//第二种返回方法
appWidgetManager.updateAppWidget(componentName, remoteViews);
}

else
{
super.onReceive(context, intent);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Intent intent =new Intent();
//设置action
intent.setAction(UPDATE_ACTION);
//对Intent操作时候使用pendingIntent进行封装
PendingIntent pendingIntent=PendingIntent.getBroadcast(context, -1, intent, 0);
//RemoteViews是对appwidget内的所有控件进行管理
//第一个参数是上下文名字,第二个参数是appwidget的布局文件
RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.appwidget);
remoteViews.setOnClickPendingIntent(R.id.gbButton, pendingIntent);
//第一种返回方法
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
/** Called when the activity is first created. */


}

2.第二是配置布局文件,布局分2个细节,第一在RES目录下创建XML目录,在里面创建对appwidget框架布局的操作,然后在layout里面创建appwidget的框架内的布局形式。

(1):

xml目录下的布局
 1 <?xml version="1.0" encoding="utf-8"?>
2 <appwidget-provider
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:minWidth="294dp"
5 android:minHeight="72dp"
6 android:updatePeriodMillis="30000"
7 android:initialLayout="@layout/appwidget"
8 >
9
10 </appwidget-provider>

 

(2):

View Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/gbTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="没广播"
/>
<Button
android:id="@+id/gbButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="改变按钮"
/>
</LinearLayout>

3.是在AndroidManifest.xml中配置信息

View Code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Wang.appwidget"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AppwidgetActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="AppwidgetActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="appwidget.UPDATE_APP_WIDGET" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info"
/>
</receiver>

</application>
</manifest>



 



转载于:https://www.cnblogs.com/WangWeiDa/archive/2011/12/27/2303864.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值