ContentProvider

1.请介绍下 ContentProvider 是如何实现数据共享的?
a. 在 Android 中如果想将自己应用的数据(一般多为数据库中的数据)提供给第三方应用,那么我们只能通过 ContentProvider 来实现了。
b. ContentProvider 是应用程序之间共享数据的接口。使用的时候首先自定义一个类继承 ContentProvider,然后覆写 query、insert、update、delete 等方法。
c. 其是四大组件之一因此必须在 AndroidManifest 文件中进行注册。
d. 把自己的数据通过 uri 的形式共享出去,android 系统下 不同程序 数据默认是不能共享访问,需要去实现一个类去继承 ContentProvider。
e. 代码实现
public class PersonContentProvider extends ContentProvider{
public boolean onCreate(){
}
query(Uri, String[], String, String[], String)
insert(Uri, ContentValues)
update(Uri, ContentValues, String, String[]) delete(Uri, String, String[])
}

f. 第三方可以通过 ContentResolver 来访问该 Provider。

2.为什么要用 ContentProvider?它和 sql 的实现上有什么差别?
ContentProvider 屏蔽了数据存储的细节,内部实现对用户完全透明,用户只需要关心操作数据的 uri 就可以了,ContentProvider 可以实现不同 app 之间共享。
Sql 也有增删改查的方法, 但是 sql 只能查询本应用下的数据库。而ContentProvider 还可以去增删改查本地文件. xml 文件的读取等。

3.说说 ContentProvider、ContentResolver、ContentObserver之间的关系。
a. ContentProvider 内容提供者,用于对外提供数据
b. ContentResolver.notifyChange(uri)发出消息
c. ContentResolver 内容解析者,用于获取内容提供者提供的数据
<provider android:exported=“true”
android:name="com.itheima.contenProvider.provider.PersonContentPro vider"android:authorities=“com.itheima.person” />
d. ContentObserver 内容监听器,可以监听数据的改变状态
e. ContentResolver.registerContentObserver()监听消息。

4.使用 contentProvider 获取本地所有的音频文件?
Android 中,系统为多媒体类型的文件(比如图片、音频、视频等)建立了数据库(sqlite 数据库),将文件的名称、大小等信息存储起来,从而完成多媒体数据的维护工作;所以我们需要实现建立一个实体类。
可以根据 ContentResover 获取到一个 Cursor,然后根据这个游标,遍历所有的歌曲的信息,设置给实体类,得到你想要的音频文件。因为是从本地读取数据,所以需要添加权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值