Android开发工程师第七章-数据存储与访问课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Android开发工程师第七章-数据存储与访问课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发 工程师 第七 数据 存储 访问 课件
- 资源描述:
-
1、教学目标 掌握SharedPreferences的原理与使用方法。掌握访问Android内部文件的方法。掌握手机SD卡的访问方法。了解手动创建SQLite数据库的方法以及对SQLite数据库的访问方法。掌握使用代码创建以及访问SQLite数据库的方法。理解ContentProvider的原理和用途。掌握ContentProvider的创建与使用方法。目录概述概述个人信息注册的设计与实现个人信息注册的设计与实现电话号码文件存储的设计与实现电话号码文件存储的设计与实现SD卡文件访问的设计与实现卡文件访问的设计与实现简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设
2、计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训概 述 Android系统提供了多种数据存储的方法,其中包含SharedPreferences、文件存储、访问外部存储器SD卡,以及SQLite数据库。其中SharedPreferences只能存储简单的键值对,文件存储可以存储各种类型的文件,SQLite数据库为应用程序提供数据库的支持。此外,Android还提供了ContentProvider组件,可以使应用程序共享底层的数据,如使用ContentProvider访问Android系统中的通讯录等。目录个人信息注册的设计与实现个人信息注册的设计与实现电话号码
3、文件存储的设计与实现电话号码文件存储的设计与实现概述概述SD卡文件访问的设计与实现卡文件访问的设计与实现简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训个人信息注册的设计与实现 SharedPreferences是Android为开发人员提供的一种简单的数据存储方式,是一种轻量级的数据保存方法,通过SharedPreferences开发人员可以将数据以NVP(Name/Value Pair,名称/值对)的形式保存在Android的文件系统中,下面通过一个个人信息注册的示例,来
4、介绍SharedPreferences的原理和使用方法。个人信息注册的设计与实现 预备知识 过SharedPreferences写数据 在使用SharedPreferences时,需要使用getSharedPreferences()方法获取一个SharedPreferences对象,代码如下所示:SharedPreferences preference=getSharedPreferences(fileName,MODE);getSharedPreferences()方法有两个参数,第一个参数为在文件系统中创建的文件名,第二个参数是文件的访问模式,SharedPreferences支持以下3种
5、访问模式。个人信息注册的设计与实现访问模式说明私有(MODE_PRIVATE)只有创建文件的程序可以读和写全局读(MODE_WORLD_READABLE)创建文件的程序可读可写,其他程序只能读全局写(MODE_WORLD_WRITEABLE)创建文件的程序可读可写,其他程序只能写。表7.1 模式说明有时需要将SharedPreferences的访问模式定义为既可全局读也可以全局写,那么可以将两种模式相加,代码如下:public static int MODE=Context.MODE_WORLD_READABLE+Context.MODE_ WORLD _WRITEABLE;个人信息注册的设计
6、与实现 获得SharedPreferences对象后,需要通过SharedPreferences.Editor类对文件内容进行编辑,最后调用commit()方法提交修改的内容,代码如下所示:SharedPreferences.Editor editor=preference.edit();editor.putString(name,name);editor.putInt(age,age);editor.putBoolean(isBoy,isBoy);editor.putFloat(weight,weight);mit();个人信息注册的设计与实现 通过SharedPreferences读数据
7、当需要从已经存在的SharedPreferences文件中读取数据时,仍然先通过getShared-Preferences()获取SharedPreference对象,然后通过SharedPreference对象的get()方法,从文件中取出相应数据,get()方法的第一个参数是变量名称,第二个参数是默认值,即如果没有成功取出第一个参数指定的变量的值,那么该变量使用默认值。代码如下所示:SharedPreferences preference=getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,
8、;msg+=年龄+preference.getInt(age,22)+,;个人信息注册的设计与实现 SharedPreferences创建的文件不仅创建程序本身可以访问,其他程序同样可以访问,前提是文件的访问模式必须设有相应的权限。下面用一个示例说明:public class OtherSharedPreferencesDemo extends Activity TextView tvMessage;public static final String fileName=SimpleFile;public static int MODE=Context.MODE_WORLD_READABLE
9、+Context.MODE_WORLD_WRITEABLE;public static final String PACK=cn.edu.nnutc;Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);tvMessage=(TextView)findViewById(R.id.tvMessage);Context context=null;个人信息注册的设计与实现 try context=this.crea
10、tePackageContext(PACK,Context.CONTEXT_IGNORE_SECURITY);catch(NameNotFoundException e)e.printStackTrace();String msg=;SharedPreferences preference=context.getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,;msg+=年龄+preference.getInt(age,22)+,;if(preference.getBoolean(isBoy,tr
11、ue)msg+=性别:男;else msg+=性别:女;msg+=,+体重:+preference.getFloat(weight,42);tvMessage.setText(msg);个人信息注册的设计与实现 上述代码中首先通过createPackageContext()方法获取创建文件的程序所在的Context,该方法第一个参数是包的名称,第二个参数Context.CONTEXT_IGNORE_SECURITY是忽略可能产生的安全问题。然后通过调用context的getSharedPreferences()方法获得SharedPreferences对象,最后通过SharedPreferen
12、ces对象获取保存的数据。个人信息注册的设计与实现 个人信息注册的实现 下面用一个示例演示如何使用SharedPreferences进行简单的数据库存储。首先建立如图7.1所示界面,用户在编辑框中输入相应的信息后,单击“写入信息”按钮,可以将用户信息写入到SharedPreferences中,当单击“读取信息”按钮时,即可将保存的用户信息读取出来显示到界面的最下方。图图7.1 示例运行界面示例运行界面个人信息注册的设计与实现 SharedPreferences建立的文件保存在/data/data/shared_prefs目录下。可以通过FileExplorer查看,如图7.2所示。图7.2 S
13、haredPreferences所在目录个人信息注册的设计与实现 在shared_prefs目录下就是程序创建的文件SimpleFile.xml,-rw-rw-rw-是Linux内核中文件的权限,文件的权限分别为创建者、同组用户以及其他用户对文件的权限,d表示目录,x表示可执行,r表示可读,w表示可写,-表示没有此权限。-rw-rw-rw-表示文件创建者和同组用户,以及其他人对文件具有可读和可写权限。个人信息注册的设计与实现 SimpleFile.xml文件是以XML格式保存的,内容如下:张三个人信息注册的设计与实现 写入信息按钮功能实现代码class btnWriteListener imp
14、lements OnClickListener Override public void onClick(View arg0)String name=editName.getText().toString();int age=Integer.parseInt(editAge.getText().toString();float weight=Float.parseFloat(editWeight.getText().toString();boolean isBoy=true;if(!radioBoy.isChecked()isBoy=false;SharedPreferences prefer
15、ence=getSharedPreferences(fileName,MODE);SharedPreferences.Editor editor=preference.edit();editor.putString(name,name);editor.putInt(age,age);editor.putBoolean(isBoy,isBoy);editor.putFloat(weight,weight);mit();个人信息注册的设计与实现 读取信息按钮功能实现代码class btnReadListener implements OnClickListener Override public
16、void onClick(View v)String msg=;SharedPreferences preference=getSharedPreferences(fileName,MODE);msg+=姓名:+preference.getString(name,张三)+,;msg+=年龄+preference.getInt(age,22)+,;if(preference.getBoolean(isBoy,true)msg+=性别:男;else msg+=性别:女;msg+=,+体重:+preference.getFloat(weight,42);tvMessage.setText(msg);
17、目录电话号码文件存储的设计与实现电话号码文件存储的设计与实现个人信息注册的设计与实现个人信息注册的设计与实现SD卡文件访问的设计与实现卡文件访问的设计与实现概述概述简单记事本的设计与实现简单记事本的设计与实现成绩共享示例的设计与实现成绩共享示例的设计与实现访问通讯录的设计与实现访问通讯录的设计与实现本章小结本章小结项目实训项目实训电话号码文件存储的设计与实现 预备知识 Android中不仅支持Java中的IO类和方法,还提供了两个方法:openFileOutput()和openFileInput(),用于简化文件的读写操作。openFileOutput()方法用于打开文件,为写入数据而作准备。
18、如果文件不存在则会自动创建一个新文件,其格式如下:public FileOutputStream openFileOutput(String fileName,int mode)电话号码文件存储的设计与实现 该方法返回一个FileOutputStream对象,使用FileOutputStream对象就可以向文件中写入二进制数据。它的第一个参数filenName,指的是文件的名称,注意,这里文件的名称不能带有路径,只能包含文件名和扩展名,如“SimpleFile.txt”,如果文件创建成功,系统会将其保存在/data/data/files目录中,因此不需要指定文件的路径。方法的第二个参数mode
19、,是文件的访问模式,Android支持4种访问模式,见表7-2。电话号码文件存储的设计与实现表表7-1 4种文件访问模式种文件访问模式模式名说 明MODE_PRIVATE私有模式,只有文件的创建程序能访问文件MODE_APPEND追加模式,将内容追加到文件的末尾MODE_WORLD_READABLE全局读,允许其他程序读文件MODE_WORLD_WRITEABLE全局写,允许其他程序写文件电话号码文件存储的设计与实现 openFileInput()方法用于打开文件,读取文件的内容。如果文件不存在会抛出一个FileNotFoundException异常。其格式如下:public FileInpu
20、tStream openFileInput(String fileName)该方法返回一个FileInputStream对象,使用FileInputStream对象就可以从文件中读取二进制数据。它的参数是文件名称,同样不需要包含文件的路径。电话号码文件存储的设计与实现 电话号码文件存储的实现 下面用一个示例演示文件的读写操作。首先建立如图7.3所示的界面,界面中包含两个EditText组件分别用于输入姓名和电话;两个Button组件:“写数据”按钮用于保存姓名和电话到“SimpleFile.txt”文件中,“读数据”按钮用于从“SimpleFile.txt”文件中读出数据并显示在TextVie
21、w组件上。图图7.3 文件访问示例文件访问示例电话号码文件存储的设计与实现 在该案例中,由于要向文件中写入不同的姓名和电话,因此文件的访问模式设置为MODE_APPEND,示例的代码如下所示:class WriteListener implements OnClickListener Override public void onClick(View arg0)FileOutputStream fos=null;try fos=openFileOutput(fileName,Context.MODE_APPEND);String Name=editName.getText().toString
22、();String Phone=editPhone.getText().toString();String msg=Name+t+Phone+n;/通过文件流将字符串转换为字节数组写入文件 fos.write(msg.getBytes();catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实现 finally if(fos!=null)try fos.flush();/将输出缓冲区中的内容写入文件 fos.close();/关闭输出流 catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实
23、现“读数据”按钮的监听器代码如下:class ReadListener implements OnClickListener Override public void onClick(View v)FileInputStream fis=null;try fis=openFileInput(fileName);bytebyteMsg=new bytefis.available();/通过输入流将文件内容读入到数组byteMsg中 while(fis.read(byteMsg)!=-1)String msg=new String(byteMsg);/将字节数组转换为字符串 tvShow.setT
24、ext(msg);catch(IOException e)e.printStackTrace();电话号码文件存储的设计与实现 finally if(fis!=null)try fis.close();catch(IOException e)e.printStackTrace();从上述代码可以看出:由于FileOutputStream对象写入的是字节流,因此需要将editName以及editPhone中获取的字符串通过getBytes()方法转为字节数组FileOutputStream对象写文件时,先写入到缓冲区,所以当写数据结束时,需要调用flush()方法将数据从缓冲区中写入文件;Fil
25、eOutputStream对象和FileIutputStream对象都需要通过调用close()方法关闭。电话号码文件存储的设计与实现 程序运行后,通过FileExplorer可以查看到在/data/data/cn.edu.nnutc/files目录下,存在新建的文件SimpleFile.txt,包括文件的大小、创建时间以及权限等信息,如图7.4所示。图7.4 SimpleFile.txt文件目录SD卡文件访问的设计与实现卡文件访问的设计与实现个人信息注册的设计与实现个人信息注册的设计与实现电话号码文件存储的设计与实现电话号码文件存储的设计与实现简单记事本的设计与实现简单记事本的设计与实现概述
展开阅读全文