首页 理论教育 Android游戏开发-ContentProvider存储

Android游戏开发-ContentProvider存储

时间:2023-10-22 理论教育 版权反馈
【摘要】:在Android系统中的两个程序之间可以进行数据交换,这个功能是通过ContentProvider实现的。在现实中有如下几种比较常见的ContentProvider接口。ContentResolver提供的接口需要和ContentProvider中需要实现的接口相对应。

Android游戏开发-ContentProvider存储

在Android系统中的数据是私有的,这些数据包括文件数据、数据库数据和一些其他类型的数据。在Android系统中的两个程序之间可以进行数据交换,这个功能是通过ContentProvider实现的。

1.ContentProvider基础

类ContentProvider实现了一组标准的方法接口,从而能够让其他的应用保存或读取此ContentProvider的各种数据类型。在程序中可以通过实现ContentProvider抽象接口的方式将自己的数据显示出来,而外部程序不会看到这个显示数据在应用当中是如何存储的,也无需关心是用数据库存储还是用文件存储。外部程序可以通过这套标准的、统一的接口在程序中实现数据交互,即可以读取程序里的数据,也可以删除程序里的数据。

在现实中有如下几种比较常见的ContentProvider接口。

(1)ContentResolver接口

外部程序可以通过ContentResolver接口访问ContentProvider提供的数据。在Activity当中,可以通过方法getContentResolver()获取当前应用的ContentResolver实例。ContentResolver提供的接口需要和ContentProvider中需要实现的接口相对应。接口ContentResolver中的常用方法如下。

■ query(Uri uri,String[]projection,String selection,String[]selectionArgs,String

sortOrder):通过Uri进行查询,返回一个Cursor。

■ insert(Uri url,ContentValues values):将一组数据插入到Uri指定的地方。

■ update(Uri uri,ContentValues values,String where,String[]selectionArgs):更新Uri指

定位置的数据。

■ delete(Uri url,String where,String[]selectionArgs):删除指定Uri并且符合一定条件的

数据。

(2)ContentProvider和ContentResolver中的URI

在ContentProvider和ContentResolver中,通常有两种使用URI的形式,一种是指定所有的数据,另一种是只指定某个ID的数据。例如下面的代码。

978-7-111-54543-9-Part02-32.jpg

在上边用到的URI一般由如下3部分组成。

■ 第一部分是“content://”。

■ 第二部分是要获得数据的一个字符串片段。

■ 第三部分是ID(如果没有指定ID,那么表示返回全部)。

因为URI通常比较长,而且有时候容易出错,并且难以理解。所以在Android中定义了一些辅助类和常量来代替这些长字符串的使用,例如下边的代码。

978-7-111-54543-9-Part02-33.jpg

2.使用ContentProvider

为了使读者掌握ContentProvider存储的用法,接下来将通过一个具体实例的实现过程,详细讲解在Android中使用ContentProvider存储数据的基本流程。

978-7-111-54543-9-Part02-34.jpg

主程序文件ActivityMain.java的具体代码如下

978-7-111-54543-9-Part02-35.jpg

对上述代码的具体说明如下。

(1)方法getContentResolver():得到应用的ContentResolver实例。

(2)方法query(Phones.CONTENT_URI,null,null,null,null):是ContentResolver中的方法,用于查询所有联系人,并返回一个Cursor。此方法中各个参数的具体说明如下。(www.xing528.com)

■ 第1个参数为Uri,在此例中的Uri是联系人的Uri。

■ 第2个参数是一个字符串的数组,数组里边的每一个字符串都是数据表中某一列的名

字,它指定返回数据表中那些列的值。

■ 第3个参数相当于SQL语句的where部分,描述哪些值是我们需要的。

■ 第4个参数是一个字符串数组,里边的值依次代替在第三个参数中出现的“?”。

■ 第5个参数指定了排序的方式。

(3)startManagingCursor(c)语句:让系统来管理生成的Cursor。

(4)ListAdapter adapter=new SimpleCursorAdapter(this,Android.R.layout.simple_list_item_2, c,new String[]{Phones.NAME,Phones.NUMBER},new int[]{Android.R.id.text1,Android. R.id.text2}):用于生成一个SimpleCursorAdapter。

(5)setListAdapter(adapter):将ListView和SimpleCursorAdapter进行绑定。

运行后的效果如图3-11所示。

978-7-111-54543-9-Part02-36.jpg

图3-11 初始效果

可以在联系人列表中添加几条数据,具体添加流程如下

1)单击模拟器的 978-7-111-54543-9-Part02-37.jpg 键,在弹出界面单击“Contacts”图标,如图3-12所示

2)单击MENU项,在弹出界面中单击“New contact”选项,如图3-13所示

3)添加联系人姓名和电话号码信息,如图3-14所示。

4)单击“Save”按钮添加新建的联系人信息,如图3-15所示。

通过上述操作步骤后,即可添加一条联系人的数据,如图3-16所示。

978-7-111-54543-9-Part02-38.jpg

图3-12 出现的桌面

978-7-111-54543-9-Part02-39.jpg

图3-13 单击New contact按钮

978-7-111-54543-9-Part02-40.jpg

图3-14 添加联系人姓名和电话号码

978-7-111-54543-9-Part02-41.jpg

图3-15 单击Save保存

978-7-111-54543-9-Part02-42.jpg

图3-16 添加后的数据

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈