黎活明老师android开发培训ppt课件_第1页
黎活明老师android开发培训ppt课件_第2页
黎活明老师android开发培训ppt课件_第3页
黎活明老师android开发培训ppt课件_第4页
黎活明老师android开发培训ppt课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast3G3G运用开发之运用开发之AndroidAndroid讲师:黎活明讲师:黎活明高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast什么是什么是3G3G3G,全称为3rd Generation,中文含义就是指第三代数字通讯。所谓3G,是指将无线通讯与国际互联网等多媒体通讯结合的新一代挪动通讯系统。 3G只是一种通讯技术规范,符合这个规范的技术有WCDMA、CDMA2000、TD-SCDMA三种制式。中国联通运用的是WCDMA世界上大部分3G网络都采用的是该规范 ;中国电信运用的是

2、CDMA2000 日、韩和北美运用;中国挪动运用的是具有自主知识产权的TD-SCDMA只需中国才运用 。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字手机(2G),3G网络能处置图像、音乐、视频等多种媒体方式,提供包括网页阅读、会议、电子商务等多种信息效力。第三代与前两代的主要区别是在传输声音和数据的速度上有很大的提升。由于3G商用需求相当浩大的工程,要从目前的2G迈向3G不能够一下就衔接得上,因此前几年2.5G的手机就出现了。符合2.5G规范的技术有CDMA2000 1X和GPRS,中国联通运用的是CDMA2000 1X规范,中国挪动运用的是GPRS规范。目前,我们可以把2.5

3、G挪动通讯技术看作是2G迈向3G的衔接性技术,在2.5G网络下出现了如WAP、蓝牙(Bluetoot) 等技术。 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast智能手机软件平台智能手机软件平台智能手机软件平台有:Symbian, Windows Mobile, RIM BlackBerry, Android, iPhone, Palm, Brew, Java/J2ME。2021年市场份额:Symbian 51%RIM BlackBerry 18%iPhone 13.3windows Mobile 9.3%linux 4.6%Android 1.8%高级软件

4、人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast什么是什么是AndroidAndroidAndroid一词的本义指“机器人,Android是Google于07年11月5日宣布的基于Linux平台开源手机操作系统称号,该平台由操作系统、中间件、用户界面和运用软件组成。在国内,联想、戴尔、多普达、飞利浦、中兴、三星、摩托罗拉、等厂商曾经推出基于Android平台的智能手机。在3G运用开发领域,Android的开展前景不容小视,也将会成为未来主流的手机操作系统。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast如何安装如何安装 Andro

5、id SDK Android SDK 和和Eclipse Eclipse 插件插件所需开发环境所需开发环境:JDK 5 或或 JDK 6 (仅有仅有JRE不够不够) Eclipse 3.5 (galileo)下载下载ADT 的的Eclipse 插件插件 dl.google/android/ADT-0.9.5.zip安装安装 Eclipse 插件插件 (ADT)启动启动 Eclipse,选择,选择 Help Install New Software,在出现的对话,在出现的对话框里,点击框里,点击Add按钮,在对话框的按钮,在对话框的name一栏输入一栏输入“ADT, 然后点然后点击击Archiv

6、e.,阅读和选择曾经下载的,阅读和选择曾经下载的ADT插件紧缩文件。插件紧缩文件。 点击点击 OK.。前往可用软件的视图,他会看到这个插件,然后选择。前往可用软件的视图,他会看到这个插件,然后选择Developer Tools (会选中下面的会选中下面的“Android Developer Tools和和 “Android Editors“),点击,点击 Next,最后重启,最后重启 Eclipse。下载下载Android SDK:dl.google/android/android-sdk_r04-windows.zip下载完下载完SDK后,把后,把.zip文件解压到他电脑上适宜位置。启动文件

7、解压到他电脑上适宜位置。启动 Eclipse,选择选择window-preferences,在翻开的视图左边点击,在翻开的视图左边点击android,在,在右边的右边的SDK Location中选择中选择Android SDK所在位置。所在位置。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast开发第一个开发第一个AndroidAndroid运用运用翻开Eclipse,新建工程(点击FileNewProject),在工程列表中展开Android目录,选择Android Project,如以下图:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客

8、教育 itcast开发第一个开发第一个AndroidAndroid运用运用高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast开发第一个开发第一个AndroidAndroid运用运用点击finish即可完成工程的创建,创建后的工程曾经是一个可运转的Android运用,我们可以经过下面方式运转此运用:点击工具栏上手机外形的虚拟设备管理器简称“AVD“,如下:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast开发第一个开发第一个AndroidAndroid运用运用在翻开的虚拟设备管理器中创建一个虚拟手机:高级软件人才实作培训专家高级

9、软件人才实作培训专家! !北京传智播客教育 itcast开发第一个开发第一个AndroidAndroid运用运用在工程上右键点击run as Android application,如以下图:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcastAndroidAndroid运用程序架构运用程序架构src/ java原代码存放目录原代码存放目录gen/ 自动生成目录自动生成目录gen 目录中存放一切由目录中存放一切由Android开发工具自动生成的文件。目录中最重要的就是开发工具自动生成的文件。目录中最重要的就是R.java文件。文件。 这这个文件由个文件由Andr

10、oid开发工具自动产生的。开发工具自动产生的。Android开发工具会自动根据他放入开发工具会自动根据他放入res目录的目录的xml界面界面文件、图标与常量,同步更新修正文件、图标与常量,同步更新修正R.java文件。正由于文件。正由于R.java文件是由开发工具自动生成的,所文件是由开发工具自动生成的,所以我们应防止手工修正以我们应防止手工修正R.java。R.java在运用中起到了字典的作用,它包含了界面、图标、常量在运用中起到了字典的作用,它包含了界面、图标、常量等各种资源的等各种资源的id,经过,经过R.java,运用可以很方便地找到对应资源。另外编绎器也会检查,运用可以很方便地找到对

11、应资源。另外编绎器也会检查R.java列列表中的资源能否被运用到,没有被运用到的资源不会编绎进软件中,这样可以减少运用在手机占表中的资源能否被运用到,没有被运用到的资源不会编绎进软件中,这样可以减少运用在手机占用的空间。用的空间。res/ 资源资源(Resource)目录目录在这个目录中我们可以存放运用运用到的各种资源,如在这个目录中我们可以存放运用运用到的各种资源,如xml界面文件,图片或数据。详细请看界面文件,图片或数据。详细请看ppt下方备注栏。下方备注栏。AndroidManifest.xml 功能清单文件功能清单文件 这个文件列出了运用程序所提供的功能,在这个文件中,他可以指定运用程

12、序运用到的效力这个文件列出了运用程序所提供的功能,在这个文件中,他可以指定运用程序运用到的效力(如如效力、互联网效力、短信效力、效力、互联网效力、短信效力、GPS效力等等效力等等)。另外当他新添加一个。另外当他新添加一个Activity的时候,也需求在的时候,也需求在这个文件中进展相应配置,只需配置好后,才干调用此这个文件中进展相应配置,只需配置好后,才干调用此Aperties 工程环境信息,普通是不需求修正此文件工程环境信息,普通是不需求修正此文件高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast拔号器拔号器效果图:高级

13、软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast拔号器拔号器由于运用要运用手机的效力,所以要在清单文件AndroidManifest.xml中添加效力权限: 略. 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast拔号器拔号器界面规划: LinearLayout (线性规划)、AbsoluteLayout(绝对规划)、RelativeLayout(相对规划)、TableLayout(表格规划)、FrameLayout(帧规划)高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast拔号器拔号器Acti

14、vity:public class DialerAction extends Activity Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View

15、v) EditText editText = (EditText)findViewById(R.idle); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(:+ editText.getText(); DialerAction.this.startActivity(intent); ); 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast拔号器拔号器测试步骤: 1在Eclipse中运转此运用 2在Dos窗口中进入android SDK安装途径的tools目录,输入以下命令再开启一个Androi

16、d模拟器: emulator -data itcast 注:itcast为用户数据存取文件,假设该文件不存在,默许在tools目录创建该文件 3在扰号器中输入上图现显的号码高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast短信发送器短信发送器效果图:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast短信发送器短信发送器由于运用要运用手机的短信效力,所以要在清单文件AndroidManifest.xml中添加短信效力权限: 略. 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast短信发送器短信发

17、送器界面规划: 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast短信发送器短信发送器Activity主要代码:String mobile = mobileView.getText().toString();String content = contentView.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new In

18、tent(), 0);if(content.length()70)/假设字数超越70,需拆分成多条短信发送 List msgs = smsManager.divideMessage(content); for(String msg : msgs) smsManager.sendTextMessage(mobile, null, msg, sentIntent, null); /最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图 else smsManager.sendTextMessage(mobile, null, content, sentIntent, nul

19、l);Toast.makeText(SMSSender.this, 短信发送完成, Toast.LENGTH_LONG).show();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast短信发送器短信发送器测试步骤: 1在Eclipse中运转此运用 2在Dos窗口中进入android SDK安装途径的tools目录,输入以下命令再开启一个Android模拟器: emulator -data itcast 注:itcast为用户数据存取文件,假设该文件不存在,默许在tools目录创建该文件 3在短信发送器的手机号中输入上图现显的号码注:目前Android系统对中

20、文短信尚未支持,所以发送中文短信会有乱码,这个问题日后会被处理的。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast数据存储与访问数据存储与访问很多时候我们的软件需求对处置后的数据进展存储或再次访问。Android为数据存储提供了多种方式,分别有如下几种:文件SharedPreferencesSQLite数据库内容提供者Content provider网络高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用文件进展数据存储运用文件进展数据存储首先给大家引见运用文件如何对数据进展存储,Activity提供了openFileOu

21、tput()方法可以用于把数据输出到文件中,详细的实现过程与在J2SE环境中保管数据到文件中是一样的。public class FileActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . FileOutputStream outStream = this.openFileOutput(itcast.txt, Context.MODE_PRIVATE); outStream.write(传智播客.getBytes(); outStream.close(); openFileOut

22、put()方法的第一参数用于指定文件称号,不能包含途径分隔符“/ ,假设文件不存在,Android 会自动创建它。创建的文件保管在/data/data/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,经过点击Eclipse菜单“Window-“Show View-“Other,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/files目录就可以看到该文件。openFileOutput()方法的第二参数用于指定操作方式,有四种方式,分别

23、为: Context.MODE_PRIVATE = 0Context.MODE_APPEND = 32768Context.MODE_WORLD_READABLE = 1Context.MODE_WORLD_WRITEABLE = 2高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用文件进展数据存储运用文件进展数据存储Context.MODE_PRIVATE:为默许操作方式,代表该文件是私有数据,只能被运用本身访问,:为默许操作方式,代表该文件是私有数据,只能被运用本身访问,在该方式下,写入的内容会覆盖原文件的内容,假设想把新写入的内容追加到原文件中。可以

24、运在该方式下,写入的内容会覆盖原文件的内容,假设想把新写入的内容追加到原文件中。可以运用用Context.MODE_APPENDContext.MODE_APPEND:方式会检查文件能否存在,存在就往文件追加内容,否那么就创建:方式会检查文件能否存在,存在就往文件追加内容,否那么就创建新文件。新文件。Context.MODE_WORLD_READABLE和和Context.MODE_WORLD_WRITEABLE用来控制其他用来控制其他运用能否有权限读写该文件。运用能否有权限读写该文件。MODE_WORLD_READABLE:表示当前文件可以被其他运用读取;:表示当前文件可以被其他运用读取;M

25、ODE_WORLD_WRITEABLE:表示当前文件可以被其他运用写入。:表示当前文件可以被其他运用写入。假设希望文件被其他运用读和写,可以传入:假设希望文件被其他运用读和写,可以传入: openFileOutput(itcast.txt, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);android有一套本人的平安模型,当运用程序有一套本人的平安模型,当运用程序(.apk)在安装时系统就会分配给他一个在安装时系统就会分配给他一个userid,当该,当该运用要去访问其他资源比如文件的时候,就需求运用要去访问其他资源比如文

26、件的时候,就需求userid匹配。默许情况下,任何运用创建的文件,匹配。默许情况下,任何运用创建的文件,sharedpreferences,数据库都应该是私有的位于,数据库都应该是私有的位于/data/data/files,其他,其他程序无法访问。除非在创建时指定了程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者或者Context.MODE_WORLD_WRITEABLE ,只需这样其他程序才干正确访问。,只需这样其他程序才干正确访问。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast读取文件内容读取文件内容假设要翻开

27、存放在/data/data/files目录运用私有的文件,可以运用Activity提供openFileInput()方法。FileInputStream inStream = this.getContext().openFileInput(itcast.txt);Log.i(FileTest, readInStream(inStream);readInStream()的方法请看本页下面备注。或者直接运用文件的绝对途径:File file = new File(/data/data/cn.itcast.action/files/itcast.txt);FileInputStream inStre

28、am = new FileInputStream(file);Log.i(FileTest, readInStream(inStream);留意:上面文件途径中的“cn.itcast.action为运用所在包,当他在编写代码时应交换为他本人运用运用的包。对于私有文件只能被创建该文件的运用访问,假设希望文件能被其他运用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。Activity还提供了getCacheDir()和getFilesDir()方法:getCacheDir()方法用于获取/data/

29、data/cache目录getFilesDir()方法用于获取/data/data/files目录高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast把文件存放在把文件存放在SDCardSDCard运用Activity的openFileOutput()方法保管文件,文件是存放在手机空间上,普通手机的存储空间不是很大,存放些小文件还行,假设要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?他可以把它看作是挪动硬盘或U盘。在模拟器中运用SDCard,他需求先创建一张SDCard卡当然不是真的SDC

30、ard,只是镜像文件。创建SDCard可以在Eclipse创建模拟器时伴随创建,也可以运用DOS命令进展创建,如下:在Dos窗口中进入android SDK安装途径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随意取,建议运用.img:mksdcard 2048M D:AndroidToolsdcard.img在程序中访问SDCard,他需求恳求访问SDCard的权限。在AndroidManifest.xml中参与访问SDCard的权限如下:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast把文件存放在把文件存放在SDCardSD

31、Card要往SDCard存放文件,程序必需先判别手机能否装有SDCard,并且可以进展读写。留意:访问SDCard必需在AndroidManifest.xml中参与访问SDCard的权限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) File sdCardDir = Environment.getExternalStorageDirectory();/获取SDCard目录 File saveFile = new File(sdCardDir, “itcast.txt);FileOutputSt

32、ream outStream = new FileOutputStream(saveFile);outStream.write(传智播客.getBytes();outStream.close();Environment.getExternalStorageState()方法用于获取SDCard的形状,假设手机装有SDCard,并且可以进展读写,那么方法前往的形状等于Environment.MEDIA_MOUNTED。Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,他也可以这样写:File sdCar

33、dDir = new File(/sdcard); /获取SDCard目录File saveFile = new File(sdCardDir, itcast.txt); /上面两句代码可以合成一句: File saveFile = new File(/sdcard/itcast.txt);FileOutputStream outStream = new FileOutputStream(saveFile);outStream.write(传智播客test.getBytes();outStream.close();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itca

34、st运用运用SAXSAX或者或者DOMDOM或者或者pullpull读取读取XMLXML文件文件在Android平台上可以运用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。 下面是本例子要解析的XML文件:文件称号:itcast.xml李明30李向梅25例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用SAXSAX读取读取

35、XMLXML文件文件SAX是一个解析速度快并且占用内存少的xml解析器,非常适宜用于Android等挪动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需求解析完好个文档,在按内容顺序解析文档的过程中,SAX会判别当前读到的字符能否合法XML语法中的某部分,假设符合就会触发事件。所谓事件,其实就是一些回调callback方法,这些方法(事件)定义在ContentHandler接口。下面是一些ContentHandler接口常用的方法:startDocument()当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处置的任务。endDocument()和上面的方法相对应,当文

36、档终了的时候,调用这个方法,可以在其中做一些善后的任务。 startElement(String namespaceURI, String localName, String qName, Attributes atts) 当读到一个开场标签的时候,会触发这个方法。namespaceURI就是命名空间,localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。经过atts可以得到一切的属性名和相应的值。要留意的是SAX中一个重要的特点就是它的流式处置,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,一切他所知道的信息

37、,就是标签的名字和属性,至于标签的嵌套构造,上层标签的名字,能否有子元属等等其它与构造相关的信息,都是不得而知的,都需求他的程序来完成。这使得SAX在编程处置上没有DOM来得那么方便。endElement(String uri, String localName, String name)这个方法和上面的方法相对应,在遇到终了标签的时候,调用这个方法。characters(char ch, int start, int length) 这个方法用来处置在XML文件中读到的内容,第一个参数用于存放文件的内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,运用new String(ch,

38、start,length)就可以获取内容。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用SAXSAX读取读取XMLXML文件文件只需为SAX提供实现ContentHandler接口的类,那么该类就可以得到通知事件实践上就是SAX调用了该类中的回调方法。由于ContentHandler是一个接口,在运用的时候能够会有些不方便,因此,SAX还为其制定了一个Helper类:DefaultHandler,它实现了这个接口,但是其一切的方法体都为空,在实现的时候,他只需求承继这个类,然后重载相应的方法即可。运用SAX解析itcast.xml的代码如下:pub

39、lic static List readXML(InputStream inStream) try SAXParserFactory spf = SAXParserFactory.newInstance();SAXParser saxParser = spf.newSAXParser(); /创建解析器/设置解析器的相关特性,/sax/features/namespaces = true 表示开启命名空间特性 saxParser.setProperty(/sax/features/namespaces,true);XMLContentHandler handler

40、= new XMLContentHandler();saxParser.parse(inStream, handler);inStream.close();return handler.getPersons(); catch (Exception e) e.printStackTrace(); return null;SAX 支持已内置到JDK1.5中,他无需添加任何的jar文件。关于XMLContentHandler的代码实现请看本页下面备注。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用DOMDOM读取读取XMLXML文件文件除了可以运用 SA

41、X解析XML文件,大家也可以运用熟习的DOM来解析XML文件。 DOM解析XML文件时,会将XML文件的一切内容读取到内存中,然后允许您运用DOM API遍历XML树、检索所需的数据。运用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,由于DOM需求将XML文件的一切内容读取到内存中,所以内存的耗费比较大,特别对于运转Android的挪动设备来说,由于设备的资源比较珍贵,所以建议还是采用SAX来解析XML文件,当然,假设XML文件的内容比较小采用DOM是可行的。代码请看本页下方备注高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 i

42、tcast运用运用PullPull解析器读取解析器读取XMLXML文件文件除了可以运用 SAX和DOM解析XML文件,大家也可以运用Android内置的Pull解析器解析XML文件。 Pull解析器的运转方式与 SAX 解析器类似。它提供了类似的事件,如:开场元素和终了元素事件,运用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以运用一个switch对感兴趣的事件进展处置。当元素开场解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。运用Pull解析器读取itcast.xml的代码在本页下方备注Pull解析器的源码

43、及文档下载/高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用PullPull解析器生成解析器生成XMLXML文件文件有些时候,我们需求生成一个XML文件,生成XML文件的方法有很多,如:可以只运用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者运用DOM API生成XML文件,或者也可以运用pull解析器生成XML文件,这里引荐大家运用Pull解析器。运用Pull解析器生成一个与itcast.xml文件内容一样的myitcast.xml文件,代码在本页下方备注运用代码如下生成XML文件:File xml

44、File = new File(myitcast.xml);FileOutputStream outStream = new FileOutputStream(xmlFile);OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, UTF-8);BufferedWriter writer = new BufferedWriter(outStreamWriter);writeXML(persons, writer);writer.flush();writer.close();假设只想得到生成的xml内容,可以

45、运用StringWriter:StringWriter writer = new StringWriter();writeXML(persons, writer);String content = writer.toString();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用SharedPreferencesSharedPreferences进展数据存储进展数据存储很多时候我们开发的软件需求向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置能否允许陌生人添加本人为好友。对于软件配置参数的保管,假设是window软件通常我们会采用ini

46、文件进展保管,假设是j2se运用,我们会采用properties属性文件进展保管。假设是Android运用,我们最适宜采用什么方式保管软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适宜用于保管软件配置参数。运用SharedPreferences保管数据,其背后是用xml文件存放数据,文件存放在/data/data/shared_prefs目录下:SharedPreferences sharedPreferences = getSharedPreferences(itcast, Context.MODE_PRIVATE);Ed

47、itor editor = sharedPreferences.edit();/获取编辑器editor.putString(name, 传智播客);editor.putInt(age, 4);editormit();/提交修正生成的itcast.xml文件内容如下:传智播客由于SharedPreferences背后是运用xml文件保管数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的称号,称号不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作方式,共有四种操作方式,这四种方式前面引见运用文件方式保管数据时曾经讲解过。假设

48、希望SharedPreferences背后运用的xml文件能被其他运用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默许运用当前类不带包名的类名作为文件的称号。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast访问访问SharedPreferencesSharedPreferences中的数据中的数据访问SharedPreferences中的数据代码

49、如下:SharedPreferences sharedPreferences = getSharedPreferences(itcast, Context.MODE_PRIVATE);/getString()第二个参数为缺省值,假设preference中不存在该key,将前往缺省值String name = sharedPreferences.getString(name, );int age = sharedPreferences.getInt(age, 1);假设访问其他运用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_REA

50、DABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个为cn.itcast.action的运用运用下面语句创建了preference。getSharedPreferences(itcast, Context.MODE_WORLD_READABLE);其他运用要访问上面运用的preference,首先需求创建上面运用的Context,然后经过Context 访问preference ,访问preference时会在运用所在包下的shared_prefs目录找到preference :Context otherAppsContext = createPackageCo

51、ntext(cn.itcast.action, Context.CONTEXT_IGNORE_SECURITY);SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences(itcast, Context.MODE_WORLD_READABLE);String name = sharedPreferences.getString(name, );int age = sharedPreferences.getInt(age, 0);假设不经过创建Context访问其他运用的preference,可以以读取

52、xml文件方式直接访问其他运用preference对应的xml文件,如: File xmlFile = new File(“/data/data/shared_prefs/itcast.xml);/应交换成运用的包名高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用嵌入式关系型运用嵌入式关系型SQLiteSQLite数据库存储数据数据库存储数据除了可以运用文件或SharedPreferences存储数据,还可以选择运用SQLite数据库存储数据。在Android平台上,集成了一个嵌入式关系型数据库SQLite,SQLite3支持 NULL、INTEGER、

53、REAL浮点数字、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只需五种,但实践上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保管时会转成对应的五种数据类型。 SQLite最大的特点是他可以保管任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段中保管除整数以外的数据时,将会产生错误。

54、另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)SQLite可以解析大部分规范SQL语句,如:查询语句:select * from 表名 where 条件子句 group by 分组字句 having . order by 排序子句如:select * from person select * from per

55、son order by id desc select name from person group by name having count(*)1分页SQL与mysql类似,下面SQL语句获取5条记录,跳过前面3条记录select * from Account limit 5 offset 3 或者 select * from Account limit 3,5插入语句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(传智,3)更新语句:update 表名 set 字段名=值 where 条件

56、子句。如:update person set name=传智 where id=10删除语句:delete from 表名 where 条件子句。如:delete from person where id=10高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用SQLiteDatabaseSQLiteDatabase操作操作SQLiteSQLite数据库数据库Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,运用该类可以完成对数据进展添加(Create)、查询(Retrieve)、更新(Update)和删除(

57、Delete)操作这些操作简称为CRUD。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。 execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法可以执行select语句。execSQL()方法的运用例子:SQLiteDatabase db = .;db.execSQL(insert into person(name, age) values(传智播客, 4);db.close();执行上面SQL语句会往person表中添加进一条记录,在实践运用中

58、, 语句中的“传智播客这些参数值应该由用户输入界面提供,假设把用户输入的内容原样组拼到上面的insert语句, 当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要处理这个问题需求对单引号进展本义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“ & 这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必需对SQL语句中的这些特殊SQL符号都进展本义,显然,对每条SQL语句都做这样的处置任务是比较烦琐的。 SQLiteDatabase类提供了一个重载后的execSQL(String sql, Object bindArgs)方法,运用这个方法可以处理前面

59、提到的问题,由于这个方法支持运用占位符参数(?)。运用例子如下:SQLiteDatabase db = .;db.execSQL(insert into person(name, age) values(?,?), new Object传智播客, 4); db.close();execSQL(String sql, Object bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 itcast运用运用SQLiteDatabaseSQLiteDat

60、abase操作操作SQLiteSQLite数据库数据库SQLiteDatabase的rawQuery() 用于执行select语句,运用例子如下: SQLiteDatabase db = .;Cursor cursor = db.rawQuery(“select * from person, null);while (cursor.moveToNext() int personid = cursor.getInt(0); /获取第一列的值,第一列的索引从0开场String name = cursor.getString(1);/获取第二列的值int age = cursor.getInt(2);/获取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论