`

Mars视频笔记——AppWidget(3)广播 控件更新

阅读更多

 

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方法传入的参数不同(小细节)

 

分享到:
评论

相关推荐

    android appwidget测试

    在src的包目录下新建一个java文件,该文件为实现所需建立的appwidget全部功能,其中比较重要的功能是接收广播消息来更新appwidget的内容。该java文件时一个类,继承AppWidgetProvider这个类,复写其中的onDeleted,...

    Mars Android视频教程的笔记

    3. **App widget.doc** - 应用小部件是Android桌面环境的重要组成部分,能让用户在主屏幕上直接与应用交互。这部分介绍了如何设计和实现一个基本的小部件,包括布局设计、更新机制(如AppWidgetProvider)以及与主...

    Mars(战神)——资产发现.zip

    Mars(战神)——资产发现、子域名枚举、C段扫描、资产变更监测、端口变更监测、域名解析变更监测、Awvs扫描、POC检测、web指纹探测、端口指纹探测、CDN探测、操作系统指纹探测、泛解析探测、WAF探测、敏感信息检测...

    mars3d-simple-angular-widget-master.zip

    《基于Angular的Mars3D简单组件库——mars3d-simple-angular-widget》 "Mars3D-simple-angular-widget-master.zip"这个压缩包文件是专为Angular框架设计的一个组件库,其核心是利用Mars3D技术来构建三维地球应用。...

    contentProvider mars的视频笔记

    这里是个人在看mars的contentprovider中的做记录的一些笔记,因为这章没有源码,所以做了点笔记下来仔细看看,不需要的同志不需要下哦

    Mars老师android视频教程第一,二,三季源码

    这个目录可能包含创建和更新AppWidget的实例。 7. **02_15_animations05**:Android动画可以提升用户体验,使界面更具吸引力。这部分可能涉及到属性动画、视图动画等各种类型的动画效果实现。 8. **listview**:...

    mars3d-es5-widget:Mars3D传统技术栈下的小部件项目模版

    ES5传统版传统模式Web前端技术栈下的一个拥有widget基础功能的应用的三维地球项目模版其他技术栈,请参考项目说明该项目与Mars3D基础项目的目录和文件完全相同,这是Mars3D基础项目的简化版本版本,可以直接复制到该...

    mars老师android视频学习笔记

    mars老师android视频学习笔记,mars老师讲解细致,这套笔记记得非常全面

    mars《Android开发视频教程》第二季part1

    08_Appwidget02、07_Appwidget01和09_Appwidget03涵盖了AppWidget的创建、更新和交互,讲解如何设计和实现个性化的桌面组件。 3. **AutoCompleteTextView**:这是一个可以自动提示输入的文本输入控件,常用于提高...

    Mars老师视频源代码

    《Mars老师视频源代码详解——深入Android编程实践》 Mars老师的视频源代码是一份宝贵的教育资源,专注于Android平台的开发。这份源代码是Mars老师在教学过程中使用的实例,旨在帮助学习者深入理解Android应用的...

    mars视频教程源码全集下载(35集全)

    mars视频教程是初学android者首选的经典网上教程,mars老师语言幽默风趣、逻辑条理清晰,可以让初学者对android有个很好的入门学习,该资源是网上mars视频教程的全部源代码,初学者可以结合网上教程和源代码进行学习...

    AppWidgetProvider

    比如,当用户点击小部件时,你可以创建一个BroadcastReceiver来响应ACTION_APPWIDGET_UPDATE意图,然后更新小部件的内容或执行相应的操作。 为了使App Widget显示在主屏幕上,你需要在AndroidManifest.xml中注册`...

    mars3d平台Vue3最简的项目模板源码

    这个"Mars3D平台Vue3最简的项目模板源码"是一个基础模板,用于快速搭建使用Mars3D和Vue3技术栈的项目,让开发者能够便捷地开发出交互式的三维地图应用。 项目模板包含以下关键知识点: 1. **Vue3**:Vue3引入了...

    mars老师android视频第一季到第五季源码及视频合集

    《mars老师android视频第一季到第五季源码及视频合集》是一份全面且深入的Android开发学习资源,由知名讲师mars老师倾力打造。这个合集包含了从基础到高级的Android开发教学视频以及配套的源码,是Android开发者提升...

    mars3d-supermap-master_supermap_火星代码_火星科技cesium_mars3d-supermap_

    《火星科技cesium在vue项目中的应用:mars3d-supermap深度解析》 在现代地理信息系统(GIS)开发中,3D可视化已经成为一个重要的趋势。火星科技(Mars Technology)作为国内领先的GIS服务商,其产品cesium Mars3D与...

    mars3d平台Vue2最简的项目模板源码

    火星三维(Mars3D)平台是一个基于Cesium的开源Web GIS框架,它提供了一整套用于构建三维地球应用的解决方案。Vue2是最简的项目模板源码,适合初学者快速搭建基于Mars3D的Web应用。在这个模板中,我们将深入探讨与...

    mars3d平台React最简的项目模板源码

    3. **Mars3D**:Mars3D是对Cesium的封装和扩展,提供了更丰富的GIS功能和更好的性能优化,如地形瓦片加载、模型加载、数据可视化、分析工具等。它简化了与Cesium的交互,使得开发工作更为简便。 4. **项目结构**:...

    创建一个简单的widget(转载自mars)

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/simple_widget_info" /&gt; ``` 6. **创建AppWidgetInfo**: 创建...

    Mars3D+nginx 搭建离线API服务,本地访问

    本教程将详细介绍如何使用Mars3D和nginx搭建一个离线API服务,以便本地进行API测试和开发工作。我们将围绕“Mars3D+nginx 搭建离线API服务,本地访问”这一主题,探讨相关知识点。 首先,Mars3D是一个基于WebGL技术...

Global site tag (gtag.js) - Google Analytics