Android中的ContentResolver应用

Android应用程序可以使用文件或SqlLite数据库来存储数据。Content Provider提供了一种多应用间数据共享的方式,比如:联系人信息可以被多个应用程序访问。Content Provider是个实现了一组用于提供其他应用程序存取数据的标准方法的类。
  应用程序可以在Content Provider中执行如下操作:
  查询数据
  修改数据
  添加数据
  删除数据
  标准的Content Provider:
  Android提供了一些已经在系统中实现的标准Content Provider,比如联系人信息,图片库等等,你可以用这些Content Provider来访问设备上存储的联系人信息,图片等等。
  查询记录:
  在Content Provider中使用的查询字符串有别于标准的SQL查询。很多诸如select, add, delete, modify等操作我们都使用一种特殊的URI来进行,这种URI由3个部分组成, “content://”, 代表数据的路径,和一个可选的标识数据的ID。以下是一些示例URI:
  content://media/internal/images 这个URI将返回设备上存储的所有图片
  content://contacts/people/ 这个URI将返回设备上的所有联系人信息
  content://contacts/people/45 这个URI返回单个结果(联系人信息中ID为45的联系人记录)
  尽管这种查询字符串格式很常见,但是它看起来还是有点令人迷惑。为此,Android提供一系列的帮助类(在android.provider包下),里面包含了很多以类变量形式给出的查询字符串,这种方式更容易让我们理解一点,参见下例:
01MediaStore.Images.Media.INTERNAL_CONTENT_URI
02Contacts.People.CONTENT_URI
03因此,如上面content://contacts/people/45这个URI就可以写成如下形式:
04Uri person = ContentUris.withAppendedId(People.CONTENT_URI, 45);
05然后执行数据查询:
06Cursor cur = managedQuery(person, nullnullnull);
07这个查询返回一个包含所有数据字段的游标,我们可以通过迭代这个游标来获取所有的数据:
08package com.wissen.testApp;
09public class ContentProviderDemo extends Activity {
10@Override
11public void onCreate(Bundle savedInstanceState) {
12super.onCreate(savedInstanceState);
13setContentView(R。layout.main);
14displayRecords();
15}
16private void displayRecords() {
17//该数组中包含了所有要返回的字段
18String columns[] = new String[] { People.NAME, People.NUMBER };
19Uri mContacts = People.CONTENT_URI;
20Cursor cur = managedQuery(
21mContacts,
22columns, // 要返回的数据字段
23null // WHERE子句
24null // WHERE 子句的参数
25null // Order-by子句
26);
27if (cur.moveToFirst()) {
28String name = null
29String phoneNo = null
30do {
31// 获取字段的值
32name = cur.getString(cur.getColumnIndex(People.NAME));
33phoneNo = cur.getString(cur.getColumnIndex(People.NUMBER));
34Toast.makeText(this, name + ” ” + phoneNo, Toast.LENGTH_LONG).show();
35} while (cur.moveToNext());
36}
37}
38}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值