ContentProvider

我这篇写得不好,更详细的壳已参考这篇:

http://blog.csdn.net/ahuier/article/details/11882059

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进行访问
posted @   帅气好男人_jack  阅读(13)  评论(0编辑  收藏  举报  
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示