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包下),里面包含了很多以类变量形式给出的查询字符串,这种方式更容易让我们理解一点,参见下例:
01 MediaStore.Images.Media.INTERNAL_CONTENT_URI
02 Contacts.People.CONTENT_URI
03 因此,如上面content://contacts/people/45这个URI就可以写成如下形式:
04 Uri person = ContentUris.withAppendedId(People.CONTENT_URI, 45);
05 然后执行数据查询:
06 Cursor cur = managedQuery(person, nullnullnull);
07 这个查询返回一个包含所有数据字段的游标,我们可以通过迭代这个游标来获取所有的数据:
08 package com.wissen.testApp;
09 public class ContentProviderDemo extends Activity {
10 @Override
11 public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R。layout.main);
14 displayRecords();
15 }
16 private void displayRecords() {
17 //该数组中包含了所有要返回的字段
18 String columns[] = new String[] { People.NAME, People.NUMBER };
19 Uri mContacts = People.CONTENT_URI;
20 Cursor cur = managedQuery(
21 mContacts,
22 columns, // 要返回的数据字段
23 null // WHERE子句
24 null // WHERE 子句的参数
25 null // Order-by子句
26 );
27 if (cur.moveToFirst()) {
28 String name = null
29 String phoneNo = null
30 do {
31 // 获取字段的值
32 name = cur.getString(cur.getColumnIndex(People.NAME));
33 phoneNo = cur.getString(cur.getColumnIndex(People.NUMBER));
34 Toast.makeText(this, name + ” ” + phoneNo, Toast.LENGTH_LONG).show();
35 } while (cur.moveToNext());
36 }
37 }
38 }

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android之客户端从服务端解析数据及上传与反馈数据
  4. Android(安卓)studio 数据库可视化操作
  5. android 中 SQLiteOpenHelper的封装使用详解
  6. android之 ExpandableListView的使用
  7. 转:android下拉列表框 spinner
  8. Android利用ContentProviderOperation添加联系人
  9. Android里监视数据库的变化[转]

随机推荐

  1. 深度系统更新(2020.11.11)
  2. 深度系统更新(2020.11.13)
  3. deepin20.1发布—细微之处 体验不凡
  4. 深度学习高能干货:手把手教你搭建MXNet框
  5. 想用Python爬小姐姐图片?那你得先搞定分布
  6. 一文看懂数据清洗:缺失值、异常值和重复值
  7. 作品拍卖价碾压毕加索,没有灵魂的AI灵魂画
  8. 「最有用」的特殊大数据:一文看懂文本信息
  9. 一文读懂「中台」的前世今生
  10. CentOS 服务器使用命令对图片进行压缩以