Android学习-内容提供器 数据共享

android内容提供器是实现数据共享的重要形式,内容提供器一般有两种,1.使用现有的内容提供器来读取和操作相应程序的数据。2.创建自己的内容提供器给我们程序的数据提供外部访问的接口。

一、访问其他应用程序中的数据

一个程序通过内容提供器对其数据提供了外部访问的接口,那么其她的应用程序就能对这部分数据进行防卫,安卓自带的电话簿,短信,媒体库等程序都提供了其他应用程序可以访问的接口。

ContentResolver的基本用法

访问内容提供器当中的共享数据需要借助ContentResolver类,Context的getContentResolver()方法,可以获取该类的实例。ContentResolver中提供了一系列大方法对数据进行CRUE操作,insert{}/delete()/query()/update()。与SqlLiteData中的方法有一些区别。这些方法都是不接受表名参数,而是使用Uri参数代替,这个参数叫做内容URI.

Uri有两部分组成:authority和path.authority主要用于不同的程序做区分,一般是包名。path对于同一程序中不同的表做区分。

标准格式如下:

content://com.example.app.provider/table1

content://com.example.app.provider/table2

查询:

Uri uri=Uri.parse(content://com.example.app.provider/table1);//调用Uri.parse()方法,把URI字符串解析成Uri对象。
Cursor cursor=getContentResolver().query(
uri,
projection,//指定查询的列
selection,//指定where的约束条件
selectionArgs,//为where的占位符提供具体的值
OrderBy //指定查询结果的排序方式
)
查询结果返回一个Cursor对象,,数据可以成该对象中逐个取出。

添加数据:

ContentValues values=new ContentVlues();
values.put("colum1","test1");
values.put("colum2",1);
getContentResolver().insert(uri,values);
更新数据:

ContentValues values=new ContentVlues();
values.put("colum1","");
getContentResolver().update(uri,value,"colum1=? and colum2 =?",new String[]{"text","1"});
注意用selection和selectionArgs参数对想要更新的数据进行约束,以防止所有的行会受到影响。

删除数据:

getContentResolver().delete(uri,"colum2=?",new String[]{"1"});

二、创建自己的内容提供器

可以通过新建的一个类去继承ContentProvider的方式来创建一个自己的内容提供器。ContentProvider类中有6个抽象的方法,使用的时候需要将6个方法全部重写。

。。。



你可能感兴趣的:(android)