紧接上集的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 的 App Market 模式,软件开发者获得 7 成收入, 3 成用于系统维护。难点在于位置营销。 设备商通过卖设备、内置特色应用来获得盈利。也可以兼职专业软件开发者进行赢利。 Google 自身通过基于统一平台为...
4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 ...
4.30 实时配置桌面上的appwidget ui layout 163 4.31 识别输入装置id与inputdevice装置 166 4.32 选取文字的聪明文字联想 169 4.33 设计与launcher相同的三页滑动layout 172 第5章 交互式通信服务与...
4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...
4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...
4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...
4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...
4.30 实时配置桌面上的AppWidget UI Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView 5.2 ACTION!CALL!拨打电话 5.3 自制发送短信程序 5.4 自制发送E-mail...
13、使用Intent ACTION 调用系统程序 19 显示网页: 19 显示地图: 19 路径规划: 19 拨打电话: 19 发送 SMS/MMS 20 发送 Email 20 为程序添加一个“分享” 21 打开多种类型的文件: 21 Uninstall 程序 24 14、将Uri...
https://blog.csdn.net/qibin0506/article/details/71307301此类放置自定义View和第三方控件集合:(按顺序)anroomcrash:验证APP崩溃和内存溢出的方法assetsfitandroid:1.拍照上传 2.复制assets目录到本地缓存...