21 内容提供者1

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代表的数据发生变化时,会触发该方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值