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进行访问
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进行访问
相关文章推荐
- ftp与sftp连接实例
- iOS程序猿如何快速掌握 PHP,化身"全栈攻城狮"?
- iOS程序猿如何快速掌握 PHP,化身"全栈攻城狮"?
- [转]非常实用的15款开源PHP类库
- HeadFirst PHP&MySQL 重点知识点记录(一)
- Scalaz(8)- typeclass:Monoid and Foldable
- PHP第一季视频教程.李炎恢.学习笔记(二)(第2章 基本语法(1))
- Scalaz(8)- typeclass:Monoid and Foldable
- php随机生成验证码
- 安装weiphp遇到的问题
- Ubuntu 安装tftp服务器
- php+phpStorm+xdebug配置方法
- PHP程序‘猿’必备的七种武器
- FoxitPhantomPDF 7.2.1.730 破解版,无视密码破解保护,OCR反输出DOC保护
- [php] try - catch exceptiong handler
- matplotlib文章
- yii源码分析I、II
- PHP命名空间和自动加载初探
- laravel5项目安装debugbar
- php sprintf函数 功能很强大滴