
Android当中,每一个应用程序的数据都是采用私有的形式进行操作的,不管这些数据是文件保存还是数据库保存,都不能被外部应用程序所访问。但是在很多情况下用户是需要可以在不同的应用程序之间进行数据的交换,所以为了解决这样的问题,在Android中专门提供了一个ContentProvider类,此类的主要功能是将不同的应用程序的数据操作标准统一起来,并且将各个应用程序的数据操作标准暴露给其他应用程序,这样,一个应用程序的数据就可以按照ContentProvider所制定的标准被外部所操作。

ContentProvider类常用的操作方法

Uri
在使用ContentProvider类进行数据操作的时候(insert()、update()等)都是采用了Uri的形式进行数据的交换,例如:有如下一个Uri

此Uri组成部分如下:
A部分(协议):ContentProvider(内容提供者)访问协议,已经由Android所规定为:content://;
B部分(主机名或Authority):用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它,一般都为程序的“包.类”名称,但是要采用小写字母的形式表示;
C部分(Path):访问的路径,一般都为要操作的数据表的名称,根据操作的不同可以如以下几种情况: 访问全部数据:content://Authority/Path member表的全部数据:content://org.lxh.demo.membercontentprovider/member/ 根据id访问数据:content://Authority/Path/ID member表中id为3的数据:content://org.lxh.demo.membercontentprovider/member/3 访问某一条记录的某个字段:content://访问标识/表名称/ID/列名称 member表第3条记录name数据:content://org.lxh.demo.membercontentprovider/member/10/name
ContentResolver
ContentProvider在程序的操作中所提供的是一个操作的标准,所以用户如果要想依靠此标准进行数据操作的时候,必须使用到android.content.ContentResolver类完成,而这个类中所给出的操作方法与ContentProvider是一一对应的, 当用户调用了ContentResolver类的方法时实际上就相当于调用了ContentProvider类中的对应方法

Activity类对ContentResolver类的操作方法
由于ContentResolver是一个抽象类,所以要想取得ContentResolver类的实例化对象进行操作,则需要依靠android.app.Activity类中的方法 public ContentResolver getContentResolver。
Uri的辅助操作类:ContentUris
由于所有的数据都要通过Uri进行传递,以增加操作为例,当用户执行完增加数据操作后往往需要将增加后的数据ID通过Uri进行返回,当接收到这个Uri的时候就需要从里面取出增加的ID,为了方便用户这种取出数据的操作,在Android中又提供了一个android.content.ContentUris的辅助工具类,帮助用户完成Uri的若干操作;ContentUris类常用的操作方法 从指定Uri之中取出ID:public static long parseId(Uri contentUri) 在指定的Uri之后增加ID参数:public static Uri withAppendedId(Uri contentUri, long id)

