`
hanllove001
  • 浏览: 48049 次
  • 性别: Icon_minigender_1
  • 来自: 绵阳
社区版块
存档分类
最新评论

android之appwidget(三)自定义action广播

阅读更多

 

紧接上集的appwidget,我们学了如何在appwidget中启动一个新activity,这次我们要根据自己的一个action而启动一个广播,从而完成我们需要的操作。

首先是新知识点:

首先,我们已经知道appwidget根本是基于广播事件的,这个从我们需要在AndroidManifest.xml配置receiver可以看出,既然是这样,那么我们也可以自己定义我们自己的action以及在provider中的onReceive中进行处理。

其次,我们需要知道appwidgetprovider的运行机制就更容易理解了,当appwidget有事件时就会发送一个广播(一个intent对象)到appwidgetprovider,他首先会启动onReceive方法来接收action,然后根据action的值来决定调用onUpdate,onDelete,onDisable,onEnable中的一个方法,他的这些方法都与一个action对应。这个模式和struts的请求分发差不多。

目前我还没找到如何上传本地图片的方法,所以只能用文字来描述,希望大家理解。

 

我们下面的实例实现的是自己定义一个action,然后在appwidgetprovider中的onReceiver中截取,然后输出一句话。

废话不多,代码如下:

 

1、首先在AndroidManifest.xml加入

 

<receiver android:name = "AppwidgetProvider">
	<intent-filter>
		<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
	</intent-filter>
	<intent-filter >
	         <action android:name="hanl.UPDATE_ACTION"/>
	</intent-filter>
	<meta-data android:name="android.appwidget.provider"
				android:resource="@xml/appwidget_info">
	</meta-data>
</receiver>
 

 

我们增加了一个过滤器:action为"hanl.UPDATE_ACTION"。

 

 

2、我们在onUpdate函数内增加一个intent,为他设置action为hanl.UPDATE_ACTION,然后用pendingintent包装intent,然后进行事件绑定。这个在appwidget(一)有具体讲解。

 

 

	               @Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		// TODO Auto-generated method stub
			//新intent
			Intent intent = new Intent();
//设置action,这个UPDATE_ACTION在上面定义的为static final String UPDATE_ACTION=hanl.UPDATE_ACTION;
			intent.setAction(UPDATE_ACTION);
			//创建一个pendingIntent。另外两个参数以后再讲。
			PendingIntent pendingIntent = PendingIntent.getBroadcast(
					context, 0, intent, 0);
			//创建一个remoteViews。
			RemoteViews remoteViews  = new RemoteViews(
					context.getPackageName(), R.layout.appwidget);
			//绑定处理器,表示控件单击后,会启动pendingIntent。
			remoteViews.setOnClickPendingIntent(R.id.button, pendingIntent);
			//更新
			appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}

 

 

3、然后在onReceive中进行拦截。

 

     @Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		String action = intent.getAction();
		if(action.equals(UPDATE_ACTION))
			System.out.println("onReceive-----"+action);
		super.onReceive(context, intent);
	}

 

 运行结果传不上来,大家试下看看,能不能输出这个action,预祝成功!

下集我们将讲解如果对appwidget控件进行修改,请期待。

分享到:
评论

相关推荐

    新版Android开发教程.rar

    Android 的 App Market 模式,软件开发者获得 7 成收入, 3 成用于系统维护。难点在于位置营销。 设备商通过卖设备、内置特色应用来获得盈利。也可以兼职专业软件开发者进行赢利。 Google 自身通过基于统一平台为...

    Google Android SDK开发范例大全(第3版)part2

     4.30 实时配置桌面上的AppWidget UI Layout  4.31 识别输入装置ID与InputDevice装置  4.32 选取文字的聪明文字联想  4.33 设计与Launcher相同的三页滑动Layout  第5章 交互式通信服务与手机控制  5.1 ...

    《Google Android SDK开发范例大全(第3版)》.pdf

    4.30 实时配置桌面上的appwidget ui layout 163 4.31 识别输入装置id与inputdevice装置 166 4.32 选取文字的聪明文字联想 169 4.33 设计与launcher相同的三页滑动layout 172 第5章 交互式通信服务与...

    Google Android SDK开发范例大全(第3版) 1/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 4/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 3/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 5/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     4.30 实时配置桌面上的AppWidget UI Layout  第5章 交互式通信服务与手机控制   5.1 具有正则表达式的TextView   5.2 ACTION!CALL!拨打电话   5.3 自制发送短信程序   5.4 自制发送E-mail...

    Android开发资料合集--续

    13、使用Intent ACTION 调用系统程序 19 显示网页: 19 显示地图: 19 路径规划: 19 拨打电话: 19 发送 SMS/MMS 20 发送 Email 20 为程序添加一个“分享” 21 打开多种类型的文件: 21 Uninstall 程序 24 14、将Uri...

    开发一款任意APP-开发一款任意APP需要的类库以及多渠道打包命名框架 如需学习用法详见旧版本:https://github.com/geeklx/jiuzhidao_xinjiagou.zip

    https://blog.csdn.net/qibin0506/article/details/71307301此类放置自定义View和第三方控件集合:(按顺序)anroomcrash:验证APP崩溃和内存溢出的方法assetsfitandroid:1.拍照上传 2.复制assets目录到本地缓存...

Global site tag (gtag.js) - Google Analytics