Content Providers(数据共享)的使用

原创 2011年01月24日 01:15:00

Content Providers

Content Providers 作用是使得各个应用程序之间实现数据共享。

ContentResolver

ContentResolver cr = getContentResolver();

URI

每个Content Providers都会对外提供一个公共的URI(包装成Uri对象),其他应用程序就可以通过Content Providers传入这个URI来对数据进行操作。

URI由3个部分组成:"content://",数据的路径,标识ID(可选)

系统的一些URI: content://media/internal/images(返回设备上存储的所有图片) content://contacts/people/5(联系人信息中ID为5的联系人记录) content://contacts/people/(返回设备上的所有联系人信息)

系统提供一些辅助类,以类变量形式给出的查询字符串 content://contacts/people/5 ->

Uri person = ContentUris.withAppendedId(People.CONTENT_URI,5);

查询数据

使用ContentResolver.query()或者Activity.managedQuery()传入一个URI来确定当前要操作的数据 返回一个Cursor对象。

//查询联系人信息中ID为5的联系人记录
Uri person = ContentUris.withAppendedId(People.CONTENT_URI,5);
Cursor cur = managedQuery(person,null,null,null);
//取得联系人姓名,电话,并按名字的升序排列
//每个Provider都有一个_id列,为每个记录保存一个数字ID值,
//_COUNT返回记录数,对所有行都是相同的。
String[] projection = new String[]{
                       
People._ID,
                       
People._COUNT,
                       
People.NAME,
                       
People.NUMBER
                     
};
Uri contacts = People.CONTENT_URI;
Cursor managedCursor = managedQuery(
                       projection
,//返回指定列的数据
                       
null,      //返回所有行的数据
                       
null,      //可选参数
                       
People.NAME+"ASC");//按名字的升序排列

修改数据

private void updateRecord(int id,int num){
   
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI,id);
   
ContentValues values = new ContentValues();
   values
.put(People.NUMBER,num);
   getContentResolver
().update(uri,values,null,null);
}

添加数据

//调用ContentResolver.insert()方法来添加一条记录
//参数:记录目标的URI,新记录值的ContentValues(Map)对象,返回一个新记录的URI(包含记录号)
ContentValues values = new ContentValues();
values
.put(People.NAME,"Abraham");
values
.put(People.STARRED,1);
Uri uri = getContentResolver.insert(People.CONTENT_URI,values);

删除数据

Uri uri = People.CONTENT_URI;
getContentResolver
().delete(uri,null,null);
//指定where条件语句删除
getContentResolver
().delete(uri,"NAME='ABORT'",null);

使用Content Providers方式共享数据

http://www.cnblogs.com/menlsh/archive/2013/04/17/3027394.html http://blog.csdn.net/flowingflying/art...
  • theworldsong
  • theworldsong
  • 2013年07月05日 22:13
  • 1087

深入理解Android四大组件之一ContentProvider

ContentProvider的使用,深入了解获取ContentProvider操作其他应用程序数据的过程 ContentProvider使用案例...
  • hehe26
  • hehe26
  • 2016年07月10日 14:49
  • 28722

Android 内容提供者——Content Providers(一)

Content Providers是Android四大组件之一,扮演者非常重要的角色,看下官方文档对它的解释: Content providers manage access to ...
  • dk822690a
  • dk822690a
  • 2015年02月10日 15:50
  • 215

Android学习笔记十七.使用ContentProvider实现数据共享(四).操作系统(联系人)的ContentProvider

Android系统本身提供了大量的ContentProvider,例如联系人信息、系统的多媒体信息等,我们开发的应用程序主要是通过ContentResolver来调用系统的ContentProvide...
  • u012637501
  • u012637501
  • 2015年01月14日 18:09
  • 1415

ContentProvider数据库共享之——概述

前言:项目终于结束了,终于有自己的时间了,感觉几个月没什么进展了,毕业的时间越长,反而觉得学到的知识越少。努力吧。...
  • harvic880925
  • harvic880925
  • 2015年03月21日 20:30
  • 3847

使用ContentProvider实现数据共享

1、数据共享标准:ContentProvider简介 ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,允许...
  • u013847120
  • u013847120
  • 2015年05月05日 20:23
  • 902

Content Provider数据共享机制

内容提供器(ContentProvider)主要用在不同的应用程序间实现数据共享的功能,他提供了一整套完整的机制,允许一个程序访问另一个程序中额数据,同时还能保证被访问的数据的安全性。 内容提供器的用...
  • ITMonkeyKing
  • ITMonkeyKing
  • 2017年03月25日 22:59
  • 258

Android4.4选择照片问题

上传图片到服务器的时候,通常要先调出选择框选择图片,这里要说的就是这个选择图片的动作。 一般来说,选择照片这个动作的过程的代码大致是这样的: Intent intent = new Inten...
  • zzf112
  • zzf112
  • 2014年07月18日 13:41
  • 7173

ContentProvider共享数据原理分析

在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过Content Provider组件来实现。那么,Content Provider组件又是如何突破...
  • guangwen_lv
  • guangwen_lv
  • 2014年08月31日 15:02
  • 1422

关于Android四大组件之一content provicer的详解

1、ContentProvider简介 在Android官方指出的Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但是...
  • EaskShark
  • EaskShark
  • 2015年06月14日 22:21
  • 2095
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Content Providers(数据共享)的使用
举报原因:
原因补充:

(最多只允许输入30个字)