6.1内容提供者简介
一、内容提供者简介
1、内容提供者(ContentProvider)是Android系统四大组件之一,用于保存和检索数据,是Android系统中不同应用程序之间共享数据的接口。
2、ContentProvider是不同应用程序之间进行数据交换的标准API,以uri形式对外提供数据,允许其他应用操作本应用数据。其他应用则使用ContentResolver,并根据ContentProvider提供的Uri操作指定数据。
二、创建一含内容提供者
1、定义一个类继承android.content包下的ContentProvider类(抽象类)。子
类需要重写它的onCreate()、delete()、getType()、insert()、query()、update()这几个抽象方法。
2、ContentProvider是四大组件之一,必须要在清单文件中注册
<provider
android:name="cn.itcast.db.PersonDBProvider"
android:authorities="cn.itcast.db.personprovider">
</provider>
6.2创建内容提供者
一、Uri简介
1、ContentProvider的几个抽象方法,这几个抽象方法中有一个参数Uri,它代表了数据的操作方法。Uri是由scheme、authorites、path三部分组成。
二、UriMatcher中的常用方法如表所示:
方法名称 | 方法说明 |
---|---|
public UriMatcher(int code) | 创建UriMatcher对象时调用,参数通常使用UriMatcher.NO_MATCH,表示路径不满足条件返回-1 |
public void addURI(Stringauthority, String path, int code) | 添加一组匹配规则. authority即Uri的authoritites部分. path即Uri的path部分 |
public int match(Uri uri) | 匹配Uri与addURI方法相对应,匹配成功则返回addURI方法中传入的参数code的值。 |
三、使用步骤
内容提供者:
1.创建自定义类继承父类ContentProvider
2.重写抽象父类的方法
3.构建Uri解析器
4.添加构建访问Uri:数据增别改查: api
5.注册内容提供者
6.3访问内容提供者
一、ContentResolver的基本用法
1、在Android系统中,ContentResolver充当着桥梁的角色。应用程序通过ContentProvider暴露自己的数据,通过ContentResolver对应用程序暴露的数据进行操作。
2、通过ContentResovler对象实现数据的操作代码如下:
- Uri uri = Uri.parse(“content:/lcn.itcast.db.personprovider/person”);
ContentResolver resolver = context.getContentResolver();
Cursor cursor = resolver.query(uri, new String { “address” , “date” ,“type” , “body”}, null, null, null
while (cursor.move ToNext()){
String address =cursor.getString();
……
}
cursor.close();
contentReso1ver resolver= getcontentResolver();
uri uri=uri.parse("content: / /com.provider111/query");
cursor cursor= reso1ver .queryuri,null,null, null,null) ;
if(cursor!=null&&cursor .getCount()>0){
while (cursor . moveToNext ()){
1ong _id=cursor.getInt(0) ;
string sname=cursor.getstring(1);
String sno=cursor.getstring(2);
string sex=cursor . getstring(3);
int img=cursor.getInt(4);
Student student=new Student(_id,sname ,sno ,sex , img);
System. out. printIn (student);
}
}
6.4内容观察者的使用
一、什么是内容观察者
1、内容观察者(ContentObserver)是用来观察指定Uri所代表的数据。当ContentObserver观察到指定Uri代表的数据发生变化时,就会触发ContentObserver的onChange()方法。此时在onChange()方法里使用ContentResovler可以查询到变化的数据。
2、接下来了解以下ContentObserver的几个常用方法,如表所示。
方法名称 | 方法说明 |
---|---|
void ContentObserver(Handlerhandler) | ContentObserver的派生类都需要调用该构造方法。参数可以是主线程Handler(可以更新UI),也可以是任何Handler对象。 |
public void onChange(booleanselfChange) | 当观察到的Uri代表的数据发生变化时,会触发该方法。 |