AppWidget3
接收来自AppWidget的广播
步骤:
1 在AndroidManifest.xml中为AppWidgetProvider注册新的intent-filter
<intent-filter>
<action adroid="my.package.MYPACKAGE">
</intent-filter>
2 使用getBroadcast()方法创建一个PendingIntent
3 为AppWidget当中的控件注册处理器
在onUpdate方法中:
pulblic void onUpdate(Context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
//创建一个Intent对象
Intent intent=new Intent();
//为Intent对象设置Action
intent.setAction(MY_ACTION); //其中MY_ACTION为定义了的常量my.package.MYPACAGE
//使用getBroadcast方法,得到PendingIntent对象,该对象执行时会发送一个广播(包含之前的intent)
PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0,intent,0);
//之后按惯例得到RemoteViews,并绑定处理器
RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
4 在onReceive方法中接收广播消息
当点击了widgeButton时 就会触发onReceive方法
从intent中得到action
if(MY_ACTION.equals(action)) 则匹配成功
更新AppWidget中控件的状态
要特别注意AppWidget和主程序不在同一个进程中,所以不能用普通方法
步骤:
1 在RemoteViews类中的一系列方法更新控件
例如各种set方法 setTextViewText setImageViewUri等
在onReceive方法中 匹配action后
//得到remoteViews
RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.example_appwidget);
//修改状态
remoteViews.setImageViewResource(R.id.imageId, R.drawable.aaa);
remoteViews.setTextViewText(R.id.widgetText,"test");
注意 别忘了调用super.onReceive(context,intent)方法 以便非自定义intent传入时候执行系统的onReceive
2 在使用RemoteViews更新控件状态之后 需要使用AppWidgetManager通知AppWidget进行该更新
//获得AppWidgetManager (这个对象在onUpdate中是作为参数传入的 但是onReceive中需要自己获取)
AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
ComponentName componentName=new ComponentName(context,ExampleAppWidgetProvider.class);
appWidgetManager.updateAppWidget(componentName, remoteViews);
*RemoteViews代表widget中的控件 ComponentName代表整个widget
可以看到在onUpdate和onReceive中的updateAppWidget方法传入的参数不同(小细节)
分享到:
相关推荐
在src的包目录下新建一个java文件,该文件为实现所需建立的appwidget全部功能,其中比较重要的功能是接收广播消息来更新appwidget的内容。该java文件时一个类,继承AppWidgetProvider这个类,复写其中的onDeleted,...
mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己整理含mp3项目的笔记mars自己...
这里是个人在看mars的contentprovider中的做记录的一些笔记,因为这章没有源码,所以做了点笔记下来仔细看看,不需要的同志不需要下哦
mars老师android视频学习笔记,mars老师讲解细致,这套笔记记得非常全面
Mars Android视频教程的笔记。。看视频的时候一边记录下来的。看一下可以回忆起视频的内容
mars视频教程是初学android者首选的经典网上教程,mars老师语言幽默风趣、逻辑条理清晰,可以让初学者对android有个很好的入门学习,该资源是网上mars视频教程的全部源代码,初学者可以结合网上教程和源代码进行学习...
Mars(战神)——资产发现、子域名枚举、C段扫描、资产变更监测、端口变更监测、域名解析变更监测、Awvs扫描、POC检测、web指纹探测、端口指纹探测、CDN探测、操作系统指纹探测、泛解析探测、WAF探测、敏感信息检测...
mars老师视频源码下载mars老师视频源码下载mars老师视频源码下载mars老师视频源码下载
mars视频教程全部源码学习必备 就此共享出来 大家共同进步
ES5传统版传统模式Web前端技术栈下的一个拥有widget基础功能的应用的三维地球项目模版其他技术栈,请参考项目说明该项目与Mars3D基础项目的目录和文件完全相同,这是Mars3D基础项目的简化版本版本,可以直接复制到该...
mars老师android视频第一季到第五季源码及视频合集
www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 WIFI(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)
https://gitee.com/marsgis/mars3d-vue-template
Mars老师视频源代码,android源程序。
mars android视频02_01_常见控件(四).zip,源码加ppt,感谢mars老师!
www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 Activity_03 (在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)
android mars视频代码 Broadcast TestBC源码 BroadcastReceiver www.mars-droid.com/Android开发视频教程 mars老师讲课 android 视频源码(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)
Android开发mars视频教学第二季+源码和ppt.rar
mars3d平台Vue2最简的项目模板源码,也可以在https://gitee.com/marsgis/mars3d-vue2-template下载。