ImageVerifierCode 换一换
格式:PPT , 页数:140 ,大小:3.22MB ,
资源ID:14018912      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/14018912.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(android 开发指南.ppt)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

android 开发指南.ppt

1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Android-,前言,3G(,3rd Generation-,第三代数字通信,),3G,是指将,无线通信,与,国际互联网,等多媒体通信结合的新一代移动通信系统,.3G,只是一种通信技术标,准,符合这个标准的技术有,WCDMA,CDMA2000,TD-SCDMA,三种无线接口标准,.,中国联通,:,使用的是,WCDMA,(世界上大部分,3G,网络都采用的是该标准

2、中国电信,:,使用的是,CDMA2000(,日,韩和北美使用,);,中国移动,:,使用的是具有自主知识产权的,TD-SCDMA(,只有中国才使用,).,相对第一代模拟制式手机,(1G),和第二代,GSM,CDMA,等数字手机,(2G),3G,手机能处理图像,音乐,视频等,多种媒体形式,提供包括网页浏览,电话会议,电子商务等多种信息服务,.,3G,网络与前两代的主要区别是在,传输声音和数据的速度上,有很大的提升,.,目前中国正在建设,3G,网络,大城市的,3G,网络基本上已经铺设好,像北京铺设好了超过,2000,个基站,深圳铺设了,1000,多个基站,.,但是要全民普及到,3G,手机尚且需

3、要几年时间。现在,大家使用的手机大多,还是,2.5G,手机,符合,2.5G,网络的接口标准有,CDMA2000 1X,和,GPRS,中国联通使用的是,CDMA2000 1X,标准,中国移动使用的是,GPRS,标准,.,目前,我们可以把,2.5G,移动通信技术看作是,2G,迈向,3G,的衔接性技,术,在,2.5G,网络下出现了如,WAP,、蓝牙,(,Bluetoot,),等技术,.,Android-,概览,Android,是基于,Linux,内核的软件平台和操作系统,,是,Google,在,2007,年,11,月,5,日公布的手机系统平台,,早期由,Google,开发,后由开放手机联盟(,Ope

4、n,Handset Alliance,)开发。它采用了软件堆层,(,software stack,,又名以软件叠层)的架构,,主要分为三部分。低层以,Linux,内核工作为基础,,只提供基本功能;其他的应用软件则由各公司自行开,发,以,Java,作为编写程序的一部分。之后,Android,提,供了,NDK,以供开发者使用其他语言编写程序。另外,为,了推广此技术,,Google,和其他几十个手机公司创建了,开放手机联盟。,Android,在未公开之前常被传闻为,Google,电话或,gPhone,。大多传闻认为,Google,开发的,是自己的手机电话产品,而不是一套软件平台。到了,2010,年,

5、1,月,,Google,始发表自家品牌手机电话的,Nexus One,。,Android-,概览,升级,Android,系统今后将继续每半年一次的升级步伐,分别定在每年的夏天和年终。每代,Android,系统都,将以甜点命名,.,比如,:,1.5,版叫做,Cupcake,(纸杯蛋糕),1.6,版为,Donut,(甜甜圈),2.1,版的,clair,(闪电泡芙,一种法式奶油夹心甜点),此版本曾被叫做,Flan“,水果馅饼”,之后是,2.2,版的,Froyo,(冻酸奶,),2.3,版的,Gingerbread,(姜饼),.,以,CDEFG,字头顺序排列,.Donut,将把社交网络功能作为升级重点,

6、在,手机的各种体验中,都增加社交,网络元素,7.,对手机业界的影响,已经与,HTC,、,NTT,DoCoMo,、,KDDI,、,Motorola,等世界通信领域,34,家公司于免费提供达成一致。今后,对于移动通信的影响势必会进一步体现出来。但是如此广泛公司的同盟是否能够有效运作及以持久值,得拭目以待。,Android-,概览,android,和自身,-,消费市场的开源挑战,Android的最大的挑战是开源,android,可能永远是开源项目,为了成功必须要销售数百万台,它,不是第一个开源手机,但是,google,领衔移动市场的开始,.,开源是双刃剑,有着大量的人才和公司资源,.,但另一方面,代

7、码不集中,就像分裂的,linux,一样,.,授权,android,android,以两种不同的开源许可发布,.,linux,内核是,GPL,发布,开源,os,需要该授权,.android,平台,(,不含内核,),由,apache,发布,.,两种发布模式都是开源为主,不同是后者面向商业用途,.,Android-,概览,堆栈式,android,Android-,概览,探索,android,构建于,linux,内科,高级优化的,java,程序的虚拟机上,.,linux,内核负责硬件部分处理,java,环境提,供了软件环境更易于编程和,ui,的设计,.,构建于,linux,内核,大量的开发人员可提供平

8、台的发展,内核比较成熟性能非常稳定,.,linux,提供了硬件抽象层,使得底,层变化不至于引发上层变动,.,运行于,Dalvik,虚拟机上,出于对效率的需要,java,语言的流行性提供了丰富的应用平台,.android,不是,j2me,平台,(,涉及,sun,的,jvm,授权,),编码环境是,java,编译成字节码,再翻译成类似但不同的,dex,文件,.,这些文件运行于,google,提供的自己的虚拟机,(,dalvik).android,程序运行在,dalvik,内,依赖于,linux,内核,比如,进程,内存,文件系统管理等,.,启动,android,开发,核心是,intent(,意图,),

9、描述的想要做什么,(,类似于,action).,intent,移动市场重在简化操作,intent,刚好满足这点,.,intent,是需求的声明,intentFilter,提供了,intent,的辅助功能,intent,有描述,action,或服务的信息构成,interntFilter,过滤哪些意图可以提供服务,Android-,概览,intent,action,通常是动词,有内置的,也可自定义,.,Android-,概览,激活,android,activity,本质上就是,UI,一个应用会包含多个,activity,每个活动包含多个视图,.,public class activity1 ext

10、ends Activity,public void,onCreate(Bundle,icicle),super.onCreate(icicle,);,setContentView(R.layout.main,);,Android-,开发环境,android,sdk,Android-,开发环境,android DDMS,透视图,Android-,开发环境,android DDMS,透视图,Android-,开发环境,命令行工具,set path=%,path%;c:softwaregoogleandroidsdktools;/windows,export path=$PATH:/,path_to

11、Android_SDK_directory,/tools,/,linux,Android Debug Bridge(,adb,),Android-,开发环境,命令行工具,连接到第一个模拟器会话,adb,-d 1 shell,Android-,开发环境,命令行工具,adb,shell install,someapplication.apk,/,安装,adb,shell,rm,/data/app/Chapter2.apk/,卸载,telnet,localhost,5554/telnet,连接到模拟器控制台,注,:,模拟器运行监听于端口,(5555),则控制器就是,5554(-1).,Androi

12、d-,开发环境,eclipse,下构建,android,应用,向导,Android-,开发环境,eclipse,下构建,android,应用,样例代码,:,src,文件夹,xxx.java,R.java,android.jar,res,文件夹,drawables,layout,values,AndroidMenifest.xml,Android-,开发环境,eclipse,下构建,android,应用,Button,button,=(Button),findViewById(R.id.calculate,);#9,button.setOnClickListener(new,Button.OnC

13、lickListener,().,Log.i(tag,onClick,invoked.);,/,记载日志,mealpricefield.getText().toString,(),/,提取文本,answerfield.setText(answer,);,/,设置文本,构建应用程序,Android-,开发环境,构建应用程序,apk,文件可用,rar,工具打开,android,模拟器,皮肤,:,代表不同的硬件布局,.,网络速度,:,移动开发的重要因素,需要可靠地网络连接,.,模拟器提供了丰富的网络条件和速度,.,Android-,开发环境,android,模拟器,注,:,模拟器和仿真器都是用于不需

14、要实物进行测试应用,.,仿真器在源代码级别上进行兼容,不能保证目标代码在真实设备中可用,.,模拟器环境中项目的目标是在二进制的级别上兼容的,缩写代码就和在实物上运行一样,包括网络延迟和稳定性,.,android,包含,emulator.exe,程序运行模拟器,同时也包含很多选项来自定义仿真器环境,.,仿真器描述文件,:,Android-,开发环境,UI,activity,是精髓,在所有,应用程序的生命周期中扮,演重要角色,.,不允许随意,夺取控制权,android,提供了生命周期以备按照,需要进入,/,退出进程,.,如何,开始 停止 暂停,继续重要,.,activity,由许多,view,组成

15、视图是与之交互的界面,.,Android-,显示单位,px,(pixels),像素,一般,HVGA,代表,320 x480,像素,这个用的比较多。,dip,或,dp,(device independent pixels),设备独立像素,这个和设备硬件有关,一般为了支持,WVGA,、,HVGA,和,QVGA,推荐使用这个,不依赖像素。,sp(scaled pixels best for text size),比例像素,主要处理字体的大小,可以根据系统的字体自适应。,除了上面三个显示单位,下面还有几个不太常用:,in(inches),英寸,mm(millimeters),毫米,pt(poin

16、ts),点,,1/72,英寸,为了适应不同分辨率,不同的像素密度,推荐使用,dip,,文字使用,sp,。,Android-,helloworld,public class,MainActivity,extends Activity,onCreate,().,AndroidManifest.xml,Android-,拨打电话与发送短,1.,打电话,Intent,intent,=new Intent();,intent.setAction(,Intent.ACTION_CALL,);,intent.setData(Uri.parse(,tel,:+,phoneNo,);,2.,发送短信,SmsMa

17、nager,mng,=,SmsManager.getDefault,();,String,msg,=hello;,mng.sendTextMessage(5554,null,msg,null,null,);,Toast.makeText(Context,1).show();,注,:,Toast,通知可以改变通知位置,.,toast.setGravity(Gravity.TOP|Gravity.LEFT,0,0);,Android-,吐司处理,/Toast,通知可以改变通知位置,.,toast.setGravity(Gravity.TOP|Gravity.LEFT,0,0);,/,自定义吐司,T

18、oast,toast,=new,Toast(getApplicationContext,();,toast.setGravity(Gravity.CENTER_VERTICAL,0,0);,toast.setDuration(Toast.LENGTH_LONG,);,/,布局文件,layout.xml,toast.setView(layout,);,toast.show,();,Android-,单元测试,.,public class,XMLTest,extends,AndroidTestCase,public void,testSomething,()throws,Throwable,Log

19、i(Test,this is test,日志,);,System.out.println(ddd,);,Assert.assertTrue(1+1=3);,Android-,数据存储,1.,内部存储,FileOutputStream,fos,=,context.openFileOutput(itcast.txt,MODE,);,MODE:,Context.MODE_PRIVATE,=0,Context.MODE_APPEND,=32768,Context.MODE_WORLD_READABLE,=1,Context.MODE_WORLD_WRITEABLE,=2,默认文件位置,:/data/

20、data/,files,FileInputStream,fis,=,Context.,openFileInput,(xxx.txt,);,new,FileInputStream(new,File(/data/data/,cn.itcast.xxx/./kk.txt,);,context.getCacheDir,(),/data/data/cache,context.getFilesDir,(),/data/data/files,createPackageContext(“xx.xx.xxx”).openFileInput,(.),Android-SD,卡读写,1.,通过,adb,命令创建,sk

21、卡,adb,shell,mksdkcard,50m,d:xxxxxxx.img,挂载,/,卸载,sd,卡,if(Environment.,getExternalStorageState,(),.,equals(Environment.MEDIA_MOUNTED,),File,sdCardDir,=,Environment.getExternalStorageDirectory,();,File,saveFile,=new,File(sdCardDir,itcast.txt,);,FileOutputStream,fos,=new,FileOutputStream(saveFile,);,.,

22、Android-Sax,解析,Xml,1.Sax,1.1startDocument(),文档开始,1.2endDocument(),文档结束,1.3,startElement(String,namespaceURI,String,localName,String,qName,Attributes,atts,),元素开始,qname,是元素名,1.4,endElement(String,uri,String,localName,String name),事件,1.5,characters(char,ch,int,start,int,length),SAXParserFactory,spf,=,S

23、AXParserFactory.newInstance,();,/,工厂,SAXParser,saxParser,=,spf.newSAXParser,();,/,解析器,/,XMLContentHandler,extends,DeafaultHandler,.,XMLContentHandler,handler=new,XMLContentHandler,();,saxParser.parse(inStream,handler);,inStream.close,();,return,handler.getPersons,();,/*,*,每当遍历到文本节点时,会触发该事件,*,/,publi

24、c void,characters(char,ch,int,start,int,length),Android-Dom,解析,Xml,2.Dom,DocumentBuilder,builder=,DocumentBuilderFactory,.newDocumentBuilder,();,Document,dom,=,builder.parse(inStream,);,Element root=,dom.getDocumentElement,();,NodeList,items=,root.getElementsByTagName(person);/查找所有person节点,for(.),no

25、de=.,(,Element)node).getAttribute(id,);,if(node.getNodeType,=,Node.ELEMENT_NODE,),.,/*,*,取得文本节点,*/,node.getTextContent,(),Android-Pull,解析,Xml,3.Pull,Android内置的Pull解析器解析XML文件.Pull解析器是一个开源的java项目,既可以用于,android,也可以用于JavaEE.如果用在javaEE需要把其jar文件放入类路径中,因为Android已经集成进了Pull解析器,所以无需添加任何jar文件.android系统本身使用到的,各

26、种xml文件,其内部也是采用Pull解析器进行解析的.Pull解析器的运行方式与,SAX,解析器,相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个,元素并触发相应事件.跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以,使用一个switch对感兴趣的事件进行处理.当元素开始解析时,调用,parser.nextText(),方法可,以获取下一个Text类型节点的值,.,XmlPullParser,parser=,Xml.newPullParser,();,parser.,setInput,(inStream,UTF-8);,

27、int,etype,=,parser.getEventType,();,while(,etype,!=,XmlPullParser.END_DOCUMENT,),switch(,etype,),case,XmlPullParser.START_DOCUMENT,:,parser.getName,();,case,XmlPullParser.START_TAG,:,etype,=,parse.next,();,Android-,sharedpreference,轻量级的数据存储机制,适合存储软件配置参数,.,内部仍然是使用,xml,进行存储,.,位于,/data/data/,shared_pre

28、fs,.,SharedPreferences,sf,=,getSharedPreferences(,itcast,Context.MODE_PRIVATE,);,Editor,editor,=,sharedPreferences.,edit,();/获取编辑器,editor.putString(name,传智播客,);,editor.putInt(age,4);,mit();,/提交修改,注,:,文件名不需要加扩展名,.,自动加上,.,/,格式如下,:,传智播客,/,读取数据,String name=,sharedPreferences.getString(name,);,int,age=,s

29、haredPreferences.getInt(age,1,);,Android-,sharedreference,访问其他包中的共享首选项,:,Context,otherAppsContext,=,createPackageContext,(cn.itcast.action,Context.CONTEXT_IGNORE_SECURITY,);,SharedPreferences,sharedPreferences,=,otherAppsContext.getSharedPreferences(itcast,Context.MODE_WORLD_READABLE,);,或者,直接通过绝对路径,

30、new File(/data/data/$,otherpackagename/shared_prefs/kk.xml,);,Android-,使用嵌入式,SQLite,Android平台上集成,的,一个嵌入式关系型数据库,SQLite3支持 NULL,INTEGER,REAL(浮点数,字),TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上,sqlite3也接受varchar(n),char(n),decimal(p,s)等数据类型,只不过在运算或保存时会转,成对应的五种数据类型.,SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关

31、心字段声明的数据类型是,什么,.,但定义为INTEGER PRIMARY KEY的字段只能存储64位整数,当向这种字段保存除整数以外,的数据时,将会产生错误.,另外,SQLite在解析CREATE TABLE语句时,会忽略字段名后面的数据类型信息,.,SQLite可以解析大部分标准SQL语句,如:,查询语句:select*from,.where,group by,.,.,having.order by 排序子句,S,QLite,分页同,mysql,相同,:,.,.,limit 5 offset 3,|,limit 3,5,Android-,使用嵌入式,SQLite,首次使用数据库需要创建表及初

32、始化一些信息,升级时需要修改表信息,android,提供了抽象类,SQLiteOpenHelper,完成此类功能,.,onCreate(SQLiteDatabase,db),方法用于首次使用时创建库,onUpgrade(SQLiteDatabase,db,int,oldVersion,int,newVersion,),方法检测版本,发生变化时更新库,.,getWritableDatabase,(),和,getReadableDatabase,(),方法均获取一个用于操作数据库的,SQLiteDatabase,实例,.,getWritableDatabase,(),方法以读写方式打开数据库,一旦

33、数据库的磁盘空间满了,数据库就只能,读而不能写,.,倘若使用,getWritableDatabase,(),打开数据库就会出错,.,getReadableDatabase,(),方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试,以只读方式打开数据库,.,Android-,使用嵌入式,SQLite,public class,DatabaseHelper,extends,SQLiteOpenHelper,private static final String name=,itcast,;/,数据库名称,private static final,int,ve

34、rsion=1;/,数据库版本,public,DatabaseHelper(Context,context),super(context,name,null,version);,public void,onCreate(SQLiteDatabase,db),/drop table if exists customers,/create table if not exists customers(.,db.execSQL(CREATE,TABLE IF NOT EXISTS person(,personid,integer primary key,autoincrement,name varch

35、ar(20),age INTEGER);,public void,onUpgrade(SQLiteDatabase,db,int,oldVersion,intnewVersion,),db.execSQL,(ALTER TABLE person ADD phone VARCHAR(12)NULL);,在实际项目开发中,当数据库表结构发生更新时,应该避免用户存放于数据库中的数据丢失,.,Android-,使用嵌入式,SQLite,使用,SQLiteDataBase,数据库,SQLiteDatabase,db=.;,db.execSQL(insert,into,person(name,age,),

36、values(?,?),new,Object.);,db.close,();,/,查询操作,Cursor,cursor,=,db.,rawQuery,(select,*from person,null);,while(,cursor.moveToNext,(),int,personid,=cursor.getInt(0);,String name=cursor.getString(1);,int,age=cursor.getInt(2);,cursor.close,();,db.close,();,SQLiteDatabase,db=,databaseHelper.getWritableDat

37、abase,();,ContentValues,values=new,ContentValues,();,values.put(name,传智播客,);,.,long,rowid,=,db.insert,(person,null,values);/,Android-,使用嵌入式,SQLite,/,删除,SQLiteDatabase,db=,databaseHelper.getWritableDatabase,();,db.,delete,(person,personid,sqlite3 data/data/,cn.itcast.android,/databases/android,sqlite

38、tables|.schemas|.help|.,exit(.quit,)|select*,.,nullvalue,NULL,/,空值数据显示问题 例,:.,nullvlaue,NULL,.,header(s,)ON|OFF,/,是否显示列头信息 例,:.headers ON,.mode MODE?table?,/,指定数据显示风格 例,:.mode column,创建表时,只能用,integer,类型,不能用,int,作为主键,否则不支持,autoincrement,.,create table,customers(id,integer primary key,autoincrement,

39、name,text);,Android-SQLite3,工具使用,变长参数,:,即时没有指定任何值,也不为,null,而是,length=0,的数组,.,Android-,ContentProvider,使用内容供应商共享数据,.,如果直接访问磁盘文件,(,SDCard|File|SQLite,数据库,|,首选项,),需要很多底层的交互细节,但是用,该种方式,只使用,url,即可对应用程序进行访问,并统一了数据访问方式,.,public class,PersonContentProvider,extends,ContentProvider,/,在该生命周期方法中才能正确得到,Content,对

40、象,.,public,boolean,onCreate,(),/.,public Uri,insert(,Uri,uri,ContentValues,values),.,Android-,ContentProvider,URI:,scheme:android,规定,必须是,content:/,authority:,惟一标识该供应商,.,path:,代表操纵的数据,.,/person,/person/10,/person/10/name,/,将字符串转换成,Uri,对象,Uri,uri,=Uri.parse(content:/xxxx/person/10);,Android-,ContentPr

41、ovider,UriMatcher,:,使用该类,可以判断,Uri,如何哪一种模式,.,/,若不匹配,返回,UriMatcher.NO_MATCH,UriMatcher,sMatcher,=new,UriMatcher(UriMatcher.NO_MATCH,);,/,一次添加匹配的模式串,以及匹配后返回的数值,.,/$authority$path,sMatcher.addURI(cn.itcast.contentprovider,person,1);,sMatcher.addURI(cn.itcast.contentprovider,person/#,2);,switch(sMatcher.

42、match(Uri,),case 1:,case 2:,.,/,获取,uri,后边,ID,部分的话,可以通过,Uri,uri,=,Uri.parse(content:/cn.itcast.provider.personprovider/person,),Uri,resultUri,=,ContentUris,.,withAppendedId,(uri,10);/.person/10,uri.parse(content:/cn.itcast.provider.personprovider/person/10),long,personid,=,ContentUris,.,parseId,(uri,

43、);,Android-,ContentProvider,XxxContentProvider,extends,ContentProvider,.,/,该方法用于返回当前,Url,所代表数据的,MIME,类型,.,如果操作的数据属于集合类型,/,那么,MIME,类型字符串应该以,vnd.android.cursor.dir,/,开头,/,如,:,vnd.android.cursor.dir,/person.,/,如果要操作的数据属于非集合类型数据,那么,MIME,类型字符串应该以,/,vnd.android.cursor.item,/,开头,/,如,:,vnd.android.cursor.it

44、em,/person,public String,getType(Uri,uri,).,.,Android-,ContentProvider,使用内容解析器,(,ContentResolver,):,ContentResolver,resolver,=,getContentResolver,();,Uri,uri,=,Uri.parse(content:/cn.itcast.provider.personprovider/person,);,ContentValues,values=new,ContentValues,();,values.put(name,itcast,);,values.p

45、ut(age,25);,/,插入,resolver.,insert,(uri,values);,/,查询,resolver.query(uri,null,null,null,personid desc);,/,更新,resolver.update(updateIdUri,updateValues,null,null);,/,删除,resolver.delete(deleteIdUri,null,null);,Android-,ContentProvider,监听,contentprovider,的数据变化,.,/,供应商中的,crud,方法完成后需要发出数据变更的通知,以通知那些感兴趣的监听者

46、XxxContentProvider,extends,ContentProvider,public long insert(.),.,getContext().getContentResolver().,notifyChange,(uri,null,);,内容解析器如若要对数据监听数据变更,需要使用,ContentObserver,对,uri,进行监听,收到通知后,回,调处理方法,onChange,().,context.getContentResolver().registerContentObserver,(uri,true,new,MyContentObserver(new,Han

47、dler();,class,MyContentObServer,exnteds,ContentObserver,public,MyContentObServer(Handler,handler),super(handler,);,public void,onChange,().,Android-,ContentProvider,监听用户发送,(,接收,),的短信,系统自带的短信程序发送,(,或接收,),短信时,会通过,ContentProvider,把短信保存进数据库,并且,发出一个变更通知,(,notifyChange,).,使用,ContentObserver,对数据变化进行监听,在用户发

48、送,短信时,就会被,ContentObserver,窃听到短信,.,/,系统,Context.getContentResolver().notifyChange(content:/sms,null,);,/,客户端,:,Context.getContentResolver().registerObserver(uri,false,new,ContentObserver(new,Handler();,Cursor,cursor,=,getContentResolver().query(Uri.parse(,content:/sms/outbox,),null,cursor.getInt(curs

49、or.getColumnIndex(_id,);,cursor.getString(cursor.getColumnIndex(address,);,cursor.getString(cursor.getColumnIndex(body,);,cursor.getLong(cursor.getColumnIndex(date,);,Android-,ContentProvider,Android-,访问通信录,1.,权限,2.,通过提供的内容供应商访问通信录,(,uri,),content:/,com.android.contacts,/contacts,操作的数据是联系人信息,Uri,con

50、tent:/,com.android.contacts,/data/phones,联系人电话,Uri,content:/,com.android.contacts,/data/emails,联系人,Email Uri,android.provider.ContactsContract.RawContacts,android.provider.ContactsContract.Data,android.provider.ContactsContract.CommonDataKinds.StructuredName,android.provider.ContactsContract.CommonD

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服