您的位置:首页 > 编程语言 > PHP开发

ContentProvider

2015-10-09 22:31 681 查看
ContentProvider概念:

ContentProvider是一种能够实现跨应用进行数据共享的机制,并且提供标准的数据访问接口;

当你需要提供数据给别人访问时,你就需要提供ContentProvider数据访问接口,别人通过你的接口,用ContentResolver与你的ContentProvider进行连接,ContentProvider会接收ContentReslover的请求,并执行相应的动作和返回执行结果;

android自己也提供了许多ContentProvider,像音频/视频和个人信息通讯录等

ContentProvider使用方法:

提供者:

1. 编写一个类继承ContentProvider类

2. 初始化资源,主要初始化URI,即资源标志符,表示我们要访问的数据,存放资源的路径(content//:com.jack.articles/articls);我们通常需要先解析Uri,并
从中获取数据,并且所有的资源均可以用uri表示

主要是注册可以访问的Uri,注册后,别人才可以通过这个uri来访问我们的数据,可以使用UriMatcher和ContentUris辅助类来帮助我们注册

在UriMatcher中,

a . 使方法addURI(String authority, String path, int code) 进行Uri注册,前两个参数分别是主机名和路径,用于标识资源的位置的,第
三个参数,用于匹配URI成功后的返回码

b. 使用match(uri)进行uri的匹配,即别的应用访问我的数据时候的uri,进行匹配,成功就返回上面的第三个参数

在ContentUri中,该类主要用于向URi后面添加id数据等,比如:我们要访问数据库里面的具体的某个id的数据,就可以用它在uri后面添加或者取出

使用withAppendedId(Uri contentUri, long id) 和parseId(Uri contentUri)

3. 第三步就是编写具体的数据操作接口,增删改查方法,这些方法都是继承与ContentProvider的,重写这些方法

a. 进行insert/update/delete时我们需要用到一个保存数据的辅助类ContentValues,类似于Map但只能存储基本的数据类型;由于这三个方法有可能改变数据
库中的内容,所以在执行完后需要使用contentResolver的notifyChange(uri)去通知监控这块区域的数据

b. 查询query方法返回的是一个cursor接口,数据集;

4. 清单文件配置访问权限

需要在清单文件里面配置provider,里面主要配置authorities,里面配置了填写了你的provider包路径,只有配置了它,第三方应用才能通过它访问你的
provider

访问者:

访问者只要知道提供者提供的URI即可进行访问,使用Content的getContentResolver() 得到一个ContentResolver,使用这个对象的增删改查,里面的参数传入正确的
uri即可对contentProvider进行访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: