ContentProvider

本文详细介绍了Android中的ContentProvider机制,包括其概念、使用方法以及如何实现跨应用数据共享。讲解了如何编写ContentProvider类、初始化资源、注册URI及实现数据操作接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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进行访问
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气好男人_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值