1、密级:学士学位论文THESISOFBACHE1.OR(20072011年)题目:基于AndrOid平台的3G气象软件学院:软件学院系计算机软件专业:计算机软件学号:姓名:指导老帅:起讫日期:2010年12月至2011年5月南昌大学学士学位论文原创性申明本人慎重中明:所呈交的论文是本人在导师的指导下独立进行探讨所取得的探讨成果。除了文中特殊加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的探讨作出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人担当。作者签名:日期:学位论文版权运用授权书本学位论文作者完全了解学校有关保留、运
2、用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的更印件和电子版,允许论文被查阅和借阅。本人授权南昌高校可以将本论文的全部或部分内容编入有关数据库进行检索,可以采纳影印、缩印或扫描等豆制手段保存和汇编木学位论文。保密口,在年解密后适用本授权书。本学位论文属于不保密口.(请在以上相应方框内打“J”)作者签名:日期:导师签名:日期:Android平分3G手机气象软件专业:计算机软件学号:学生姓名:指导老师:摘要随着智能手机的快速普与,智能手机操作系统布场风生水起为了让智能手机用户能够随时随地查询互联网所供应的服务,一种高效的方法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网
3、以与互联网访问Web网站并处理各种各样的业务。因此,智能手机的应用软件与其须要的服务将有广袤的发展前景。在如今这个智能手机系统群雉纷争的时候,2008年Goog1.e推出一款名为AndrOid的开源智能手机操作系统,它采纳1.inUX内核,开放手机联盟SHA)成员可以随意运用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所须要的全部软件。AndrOid的最大特点是其开放性体系架构,不仅具有特别好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以与强大的阅读器。因此,对于软件从业人员来说,Andro
4、id平台具有无限的吸引力。木文就在分析探讨Android手机软件开发技术原理的基础上,开发出能为用户供应更好的基于Android平台的3G手机气象软件。关健字:android:气象软件:智能手机平台AbstractWiththerapidpro1.iferationofsmartphones,smartphoneoperatingsystemmarket,windandwater.InorderforsmartphoneuserstochecktheInternetanytime,anywhereservicesprovide(ianefficientwaytoexpandthefundion
5、ofthesystemwi1.1.beapp1.iedtothemobi1.ephonetermina1.,themobi1.ephonetoInternetaccessvianobiIenetworks,andvarietyofWebsitesandprocessbusiness.Therefore,thesmartphoneapp1.icationsandtheneedfortheservicewi11havebroadprospects1.ordeve1.opment.Intodayssmartphonesystemwhendisputeswar1.ords,2008,Goog1.ein
6、troducedasmartphoneca1.1.edIheAndroidopensourceoperatingsystem,whichuses1.inuxkerne1.,OpenHandsetA1.1.iance(OHA)memberscanbefreetouseandmodifytheSDKpackage,thesystemIthasagoodopen-sourcenatureoftheexpansionof.Thesoftwareinc1.udestheoperatingsystem,userinterfaceandapp1.icationsthatneedtoworksmartphon
7、esa1.1.thesoftware.ndroi(sbiggestfeatureisitsopenarchitecture,noton1.yhasaverygooddeve1.opmentanddebuggingenvironment,buta1.sosupportsavarietyofsca1.ab1.euserexperience,ponents,mu1.timediasupport,andpowerfu1.browser.Therefore,forsoftwareprofessiona1.sis,Androidp1.atformhasuniimitedappea1.Inthispaper
8、theana1.ysisanddiscussionAndroidmobi1.ephonesoftwaredeve1.opmenttechno1.ogyonthebasisoftheprincip1.e,deve1.opedtoprovideusersWi1.hbetterp1.atformtothe3GhandsetsbasedonAndroidmeteoro1.ogica1.software.Keywords:android:weathersoftware;smartphonep1.atform摘要IAbstractII第一章绪论11.1探讨内容11.2探讨意义11. 3探讨现状和发展趋势
9、1其次章系统分析31.1 探讨目标32. 2需求分析32. 3性能分析4第三章系统开发环境与相关技术53. 1Android开发环境介绍53.2AndrOid开发平台搭建5第四章程序设计74.1 用户界面设计74.2 数据库设计74.3 程序模块设计9第五章程序开发105.1 文件结构与用途105.2 数据供应者135.3 后台服务215.3.1获得天气数据215.3.2读取天气数据实例255.3.3定时更新时间265.4用户界面265.4.1程序入口类ForeCaS1.WidgeI265.4.2设置页面ConfigUreACtiVity295.4.3具体页面De1.ai1.FOreCaS1.
10、AC1.iViIy325.5动态特效34第六章系统测试36第七章总结37参考文献38致谢39第一章绪论1.1探讨内容Android平台3G手机气象软件是基于Android手机平台,运用JaVa语言,从Goog1.e上获得天气预报信息,开发出针对运用Android平台的手机天气预报系统。1.2探讨意义Android平台3G手机气象软件的开发可以进一步扩大气象信息的布盖If1.1.让广袤公众能够在第一时间便利且快捷地获得最新的气象预报(预警)信息,以便提前预防,把气象灾难造成的损失降到最低。同时也可以强化气象公共服务的职能,完善公共服务体系、改善公共服务手段、增加公共服务产品、提高公共服务质量,更
11、好地发挥了气象事业村经济社会发展的现实性作用。1. 3探讨现状和发展趋势据Gartner最新数据显示,2010年其次、三季度全球智能手机销售接者大幅增长,其中第三季度安卓占全球智能手机市场的25.5%,仅次于塞班,成为其次大智能手机系统。2010其次、三季度与去年同期相比,增度分别是15.钱与22乐增势迅猛。而塞班系统较09年的市场份额,尽管终端箱里有大幅度提升,但增势下滑10%,形势特别严峻。其他操作系统的表现则要平稔很多。安卓是首款开源代码的操作系统,采纳1.inUX内核,开放手机联盟(OHA)成员可以随意运用和修改安卓的SDK软件包。系统的开源性使其具有良好的拓展性,一方面,为众多移动应
12、用开发者供应了良好的系统性平台,有利于移动应用的集合;另方面,终端厂商可以针对自身的特殊须要“定制化开发”。与此相比,尽管2010年2月,塞班基本完成开源工作,但由于代码臃肿,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。据InfOnna预料,2012年,安卓手机销量将超过诺基亚塞班手机,届时安卓将成为全球最大的智能手机平台。谷歌表示目前安卓手机每日平均激活量为20万部,销售速度加速上涨。我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实。安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免剪让更多的厂商
13、加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发:应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。其次章系统分析1.1 探讨目标(1) 了解Android应用程序的设计和开发过程:(2)运用多种组件进行AndrOid平台3G手机气象软件的开发。本软件是基于Ec1.ipse的开发环境,依托Goog1.e气象数据建立气象信息数据库,开发出了针对AndrOid平台的手机天气预报系统。1.2 需求分析本软件是一个ppWidget应用程序,启动程序后可以进行城市
14、更新频率的设置,可以通过图片和文字显示当前和将来的天气状况,包括温度、湿度、风向和雨雪状况等。这些天气数据是通过后台服务获得的,这个后台服务可以依据肯定时间间隔,从Goog1.e上获得天气预报信息,并将天气信息保存在数据库中。从上面的描述中可以基本了解软件的功能需求:(1)启动APPWidget应用程序:(2)设置界面:对要显示天气预报的城市与更新频率进行设苴:(3)显示界面:通过文字和图片显示当前的天气状况,包括日期、时间、城市、最高温度、最低温度、当前温度等。(4)具体界面:通过文字图片动画显示当前的天气状况,包括城市当前大气、温度、风向、风速、湿度;同时显示今后四天的天气状况。2. 3
15、性能分析程序响应速度快、平安性高、信息处理速度快。第三章系统开发环境与相关技术2.1 Android开发环境介绍Android的上层应用程序是用Java语言开发,同时还须要基于Da1.vik虚拟机,所以,GoOgIe公司举荐运用主流的JaVa继承开发环境ECIiPSe.只有EeUPSe还不够,因为是运用JaVa语言进行开发,还应当有由SUN公司供应的JaVaSDK(其中包括JRE:JaVaRuntimeEnvironment)o此外,Android的应用程序开发和Java开发有较大区分的,所以还须要有GOog1.e供应的AndrOidSDKo同时,还须要在Ec1.ipse安装ADT,为Andr
16、oid开发供应开发工具的升级或者变更,是Ec1.ipse下开发工具的升级下载的工具。简言之,须要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。(1) JavaSDK(2) Ec1.ipse(3) AndroidSDK(4) ADT3. 2Android开发平台搭建Android开发平台搭建步骤:首先到:ee1.ipse.orgdo*n1.oads/下载EC1.iPSe集成开发环境并且解压,这里举荐下载JaVaEE集成版本,可以为平台的搭建省下不少工作。接着再去sunjavasedown1.oadsindex.jsp站点下载SDK后安装,下载:/d1.goog1
17、eandroid/android-sdk-windows-1.5r1.zip,AndroidSDK1.5后解压。第一步下载工序就结束九双击Ec1.ipse解压后书目中的ec1.ipse.exe然后启动,选择Ec1.ipse菜单中的I1.e1.p-Insta1.1.NewSoftware-选项卡上的AvaiIab1.eSoftware点击右恻的“Add”输入:/d1.-ss1.goog1.eandroidec1.ipse后确定,然后在Workwith下拉菜单中选择刚才输入的网址。过一会就会出现个DeveIoPerToo1.s选项,勾上以后点击Next以后EeIiPSe会自动网上查找AndrOi
18、d开发工具插件,然后找到AndroidDDMS和AndroidDeve1.opmentToo1.s.选中这两个点击FiniSh,Ec1ipse就会自动下载并安装Android插件心最终会提示重启Ec1.ipseo重启后选择Ec1.ipse菜单中的Windows-Preferences在左侧的Android项目中SDK1.ocation中填入AndroidSDK解压后的书目,然后点击App1.y0在WindoWSXP的系统变量中的Path变量中添加个值,该值指向解压后的AndroidSDK书目下的too1.s文件夹。第四章程序设计-1.1用户界面设计依据需求分析可以知道,应用程序应包含三个主要的
19、用户界面,这里须要进一步分析每个用户界面中应当包括哪些显示内容。在“设置页面”中,须要对要显示天气预报的城市与更新频率进行设置。在“显示页面”中,显示当前的天气状况,包括城市名称、温度、湿度、风向、雨雪状况和获得数据时间等信息。在“具体页面”动态显示当前天气状况,还要显示将来四天的天气状况。依据对用户界面显示内容的分析,绘制出用户界面的草图,如图4-1所示。图47用户界面草图4.2数据库设计本软件中有两部分数据须要存储,个是显示页面的数据,另个具体页面的数据。因此选择SQ1.ite数据库作为存储数据的方法,建立数据库forcasis.db,并且建立两张表weather_forcastt和*ea
20、Ihejwidget,分别存储显示页面的数据和具体页面的数据。表4-1具体页面的数据库表WeatheJforcast的结构属性数据类型说明_idinteger白动增加的主犍WidgetIdinteger组件的ID号JayOfWeektext周儿1.owinteger最低温度hightinteger最高温度icontext显示天气的图标conditiontext将来天气状况表4-2显示页面的数据库表WeatherWidgec的结构属性数据类型说明_idinteger存储Widget组件idcitytext进行大气信息查询的城市名UpdateMi1istext进行天气信息查询的频率,单位为分/次i
21、SConfiguredtext是否设置Posta1.Codetext城市标记ForecastDateinteger预报日期conditiontext当前天气状况tempFinteger最高温度tempCinteger最低温度humiditytext当前湿度icontext天气图标WindConditiontext风向风速状况IastUpdateTimeinteger最终一次更新时间从功能需求上分析可以看出,整个应用程序应划分为4个模块,分别是程序启动、用户界面、后台服务和数据库适配器,各模块之间的关系如图4-2所示。从模块结构图中不难看出,后台服务是整个应用程序的核心,主要是”数据获得模块”,
22、负责周期性的从Goog1.e获得天气信息。后台服务在程序启动时就由AppWidgetProvider启动,也可由用户界面通过SIarISerViCe。进行启动,启动后的后台服务将始终保持运行状态。用户界面从数据库中获得天气信息,而没有干脆通过网络访问Goog1.e的天气数据。之所以这么实际,一方面可以避开因网络通信不畅造成界面失去响应:另一方面,后台服务可以与时更新数据,以保证数据的精确性。数据库适配器封装了全部对SQ1.ite数据库操作的方法,用户界面和后台服务会调用它来实现数据库操作。在完成用户界面设计、数据库设计和模块设计后,至此程序设计阶段基本完成。第五章程序开发5.1文件结构与用途在
23、程序开发阶段,首先确定“Android平台3G手机气象软件”的工程名为ty-weathcr,据程序模块设计的内容,建立ty-wcather工程CWeather工程源代码的结构如图5.1所示。图5.1ty-weather工程的源代码文件为了使源代码文件的结构更加清楚,Weather工程设置了多个命名空间,分别用来保存用户界面、数据库、后台服务和工具实体的源代码文件,源代码文件的名称以与说明如表5.1所示。表5.1Iy-WeaIher工程的文件用途说明包名称文件名说.明com.ty.weatherConfigureActivity.java“设置页面”的AetiVitycom.ty.weather
24、De1.aiIForecastActivity.java“具体页面”的ACtiVitycom.ty.weatherForecastProvider.java天气预报相关数据供应者,操作数据库com.ty.weatherForecastService.java后台进程内服务com.ty.weatherForecastTineService.java后台时间服务com.ty.weatherForecastWidget.java实现AppWidget组件,并启动服务com.ty.weatherWebService1.Ie1per.java网络数据获得模块com.ty.weather,ti1.Fore
25、castEntity.java将来天气信息的类com.ty.weather,uti1.ForecastUti1.java天气信息工具类com.ty.weather,ti1.WidgetEntity.java当前天气信息的类AndrOid的资源文件保存在/res的子书目中。其中、resanim书目中保存的是产生动画效果的XM1.文件,resdrawab1.e书目中保存的是图像文件,resVaIUeS书目中保存的是用来自定义字符串和颜色的文件,resxm1.书目中保存的是XM1.格式的数据文件。全部在程序开发阶段可以被调用的货源都保存在这些书目中,具体每个费源文件的用途可以参考表5.2:表5.2资
26、源文件名称与用途资源书目文件说明animrotatecurrentweather,xm1渐变透亮度动画效果trans1.atec1.oud1.eft,xm1.画面转换位置移动动画效果(从左至右)Irans1.atec1.oudrigh1.xm1.画面转换位置移动动画效果(从右至左)trans1.aterain1.xm1.画面转换位置移动动画效果(从上至下)transIaterain02.xm1.画面转换位置移动动画效果(从上至下)transIaterain03.xm1.画面转换位置移动动画效果(从上至下)transIaterain04.xm1.画面转换位置移动动画效果(从上至下)transIa
27、terain05.xm1.画面转换位置移动动画效果(从上至下)drawab1.ec1.oudy.Png这个文件夹里是工程里所用的图片,如有表示天气状况、数字等,此处不赘述。dots,pngnumber7tahoma.pngweathersunny,png1.ayoutconfigure,xm1.设苴城市、天气更新频率的布Wweather,xm1.“显示页面”的布局detai1.,xm1.“具体显示”页面上边的显示当前天气的布局detaiIiterns,xm1.“具体显示”页面下边的显示将来天气的布Hva1uesco1.or,xm1.保存颜色的XM1.文件strings,xm1.保存字符串的KM
28、1.的文件xm1.weatherwidget,xm1.AppWidget的属性文件5.2数据供应者数据供应者FOreCaStPrOVider继承ContentProvider,是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同的应用程序之间是不能够干脆进行访问的。而CotentProvider为程序员供应了较高级的数据共享方法,应用程序可以指定须要共享的数据,而其他应用程序则可以在不知数据来源、路径的状况下,对共享数据进行查询、添加、删除和更新等操作。在介绍ForecastProvider的核心代码前,首先了解一下WidgetEntity.java(当前天
29、气信息的类)和ForeCaStEntity.java(将来天气信息的类)。(1) WidgetEntity.java的部分代码:pub1.icc1.assWidgctEntityprivateArray1.iSEVForecasiEn1.itydetai1.s=newArray1.ist();/ForecastEntity对象privateIntegerid;编号privateIntegerupdatcMi1is;更新频率privateStringcity;城市privateStringposta1.Codc;/城市标记private1.ongforecastDate;预报时间privateS
30、tringcondition;天气状况privateIntegerIemPF;华氏温度privateIntegertcmpC;摄氏温度privateStringhumidity;/湿度privateStringicon;/天气图标privateStringWindCondiiion;风力风向private1.ongIastUpdateTime;/坡终更新时间privateIntegerisConfigured;是否已设置从代码中可以看出,除ForecastEnti1.y的对象detai1.s,WidgetEntity类中有以上公有静态属性id、UpdateMi1.is、UPda1.eMi1.i
31、s、posta1.Co(ie,forecastDate.condition.tempF.tempC.humidity,icon,WindCondition,Iast1.ipdatcTime,isConfigurcd,完全对应数据库中WeatheJWidget的表。(2) ForecastEntity.java的部分代码:pub1.icc1.assForecastEntity(privateIntegerid;编号privateString(IayOfWeek:星期privateInteger1.ow;最低温度privateIntegerhight:最高温度privateStringicon;天
32、气图标privateStringcondition:/天气状况privateIntegerwidget1.d:/组件id从代码中可以看出,WidgetEntity类中有以上公有薛态属性id、dayOfWeek、1.ow,highticon,condition,widget1.d,完全对应数据库中Weau1.er_forcast的表。在创建ForecastProvider时,首先须要运用数据库、文件系统或网络实现底层存储功能,这里我们采纳数据库建立了数据库设计中的两张表,从而实现JZ底层存储功能。然后在维承ConIenIProVider的类中实现基本数据操作的接IJ函数,包括添加、删除、查找和更
33、新等功能。下面就核心代码进行分析。(1)创建数据库:DatabaseHc1.per类继承SQ1.itcOpenHe1.per,SQ1.iteOpen1.Ie1.per这个类可以协助建立、更新和打开数据库。DatabaseHe1.per在建立数据库时,同时建立了两个数据库表WeatherWidget和Weather_forcast,并对保存配置信息的表进行了初始化。具体代码如下所示:privatestaticc1.assDatabascHe1.perextendsSQ1.iteoPOnHeIPer,数据库名称privatestaticfina1.StringDATABASENAMHforecas
34、ts.d1.:/数据库版本privateSteticfina1.intDATABASEVERSI=2;/构造方法,重载父类构造pub1.icDatabascHeIper(Contextcontext)super(context,DTABASE_NAMEtnu1.1.,DATABASEfERSi02;pub1.icvoidonCreate(SQ1.itcDatabasedb)创建Wea1.heJWidget表pub1.icvoidonCreate(SQ1.iteDatabasedb)/创建Wea1.heJWidget表db.execSQ1.(wCREATETABI.E+TAB1.EWIDGET+
35、创建Wea1.heJforeCaSt表db.execSQ1.(*CREATETAB1.E+TAB1.EFORECAST+”(*/重写OnUPgrade()方法Overridepub1.icvoidon1.grade(SQ1.iteDatabasedb,intoIdVersion,intncwVersion)(2)URI设置:ContentProvider可以供应多个数据集,调用者运用URI(通用资源标识符)对不同的数据集的数据进行操作。IRI用来地位任何远程或本地的可用资源。ContentProvider运用的URI语法结构content:/因此,我们就须要先来对URI进行设置。代码如下
36、pub1.icstaticc1.assWeaihei-Widgetsi111.enentsBaseCo1.umns(/继承BaSeCo1.umns可以供应自动生成的ID/声明CONTENTJJR1.pub1.icstaticfina1.1.-riCozTENT_URI=Uri.parse(content:/7”+AUTHORITY+Vwidgets*);pub1.icstaticfina1.StringFORECAST_EDforecasts”;指操作多条数据pub1.icstaticfina1.String(XTET_TYPE-vnd.android,cursor,dirawidge1.*
37、指操作单条数据pub1.icstaticfina1.StringCOMENTTE也TYPE=“vnd.android,cursor,item/Widget”;(3)杳询功能:首先我们先了解一下SQ1.iteQueryBui1.cier的query。方法。query(SQ1.iIeDa1.abasedb,Stringprojectionin,Stringse1.ection,StringSe1.ectionArgs,StringgroupBy,Stringhaving,StringSortOrder,String1imit),参数说明如表5.3:参数说明SQ1.iteDatabasedb要查询
38、的数据库实例String是一个字符串数组,里边的每一项代表了须要projectionin返回的列名Stringse1.ection相当于SQ1.语句中的where部分String是一个字符串数组,里边的每一项依次替代在Se1.ectionArgs第三个参数中出现的问号(?)StringgroupBy相当于SQ1.语句当中的groupby部分Stringhaving相当于SQ1.语句当中的having部分StringsortOrder描述是怎么进行排序相当FSQ1.当中的Iimit部分,限制返回的数Siring1.imit据的个数查询功能的核心代码如下:pub1.icCursorquery(Ur
39、iuri,String11projection,Stringse1.ection,StringSe1.ectionArgs,StringsortOrder)/getReadab1.cDatabase()这个函数会数据库是否存在、版本号和是否可读等状况,确定在返回数据库对象前,是否须要数据库。返回一个可读的数据库对象。SQ1.itcDatabasedb-dbHe1.per.gctReadab1.cDatabase();/声明白一个SQ1.iteQUeI.yBuiIder对家,该对象利用传入的参数生成一个完整的/sq1.ite查询语句,还可以完成查询工作并返回结果集(CUrSOr)。SQ1.ite
40、QucryBuiIdcrqb-newSQ1.itcQueryBui1der();String1.imit=nu1.1.;通过一个SRitCh语句,完成了通过Uri种类的辨别来生成不通的SQ1.iteQueryBui1der对象的S作switch(uriMatcher.match(uri)caseW1.DGETS:qb.SetTab1.es(TAB1.E_WIDGET);break:caseWIDGETSJD.StringappWidget1.d=uri.getPa1.hSegments().get(1):qb.SetTab1.es(TAB1.E_WIDGET);qb.appendWhere(B
41、aseCo1.umns._/P+”=+appWidgetId);break;caseHrIDGETS_FORECASTS:/Picka1.1.theforecastsforgivenwidget,sortedbyda1.eand/importance获得appWidget1.dStringappWidget1.d-uri.getPathSegments().get(1.);/为该SQ1.iteQueryBui1.der对象设置它查询匚作将针对的表qb.SetTab1.es(TAB1.EJORECAST);的Where条件qb.appendWhere(ForecastEn1.ity.W1DGET
42、1D+appWidget1.d);/依据BaSeCo1.U1.nns._ID进行排序SortOrder=BaseCo1.umns._/P+ASC*;break:caseFORECASTS-.qb.se1.Tab1es(TAti1.EJ-ORECASt);break;caseFORECASTS。.StringforecastId=ri.getPathSegments().get(1.):qb.seITab1es(TAH1.EJORECAS1:qb.appendWhere(BaseCo1.umns._/0+forecastId);break;returnqb.query(db,projectio
43、n,se1.ection,Se1.ectionArgs,nu1.1.,nu1.1.,sortOrder,1init);(4)添加、删除、更新功能由于核心代码类似,此处不一一赘述。添加功能:pub1.icUriinsert(1.-riuri,Con1.en1.Va1.uesva1.ues)删除功能:pub1.icintde1.ete(Uriuri,Stringse1.ection,StringseIectionArgs)()更新功能:pub1.icintupdate(Uriuri,ContentVa1.uesva1.ues,Stringse1.ection,S1.ringSe1.ectionAr
44、gs)(5)类型匹配:增删改查通过SWi1.Ch推断,进行不同的操作,因而还须要对关键字进行类型匹配,核心代码如卜.:*getTypeO函数用来返回指定UR1.的MIME数据类型* CONTENTTYPE表示UR1.是多条数据* CONTENTTEM_TYPE表示是单条数据Overridepub1.icStringgetType(1.riuri)(/TODOAuto-generatedmethodstubswitchuiiMatcher.match(uri)caseFIDGETS:returnWeatherWidgets.CoNTENTJYPE、case网DGETSID-.returnWeat
45、herWidgets.CONTENT_ITEM_TYPEcaseWIDGETSFORECASTS:returnWeatherDetai1.s.CONTENT_TYPEcaseFORECASTS:returnWeatherDetai1.s.CONTENT_TYPEcaseFORECASTSID:returnWeatherDetai1.s.CONTENT_ITEM_TYPEthrownevI1.1.ega1.StateExceptionO;构造无IJ1.配方式的UriMatCherprivatestaticfina1.IriMatcherUriNatCher-nevUriMatcher(UriMatcher.NOJVTCf;privatestaticfina1.intWIDG1.iTS=IO1.;privatestaticfina1.int睚DGETSjD-102:privatestaticfina1.intmDGETSJ函CASTS=103;privatestaticfina1.intFORECASTS=201;privatestaticfina1.intFORECASTS_ID=202;声明门UriMatc