一、数据共享作用
当我们需要把应用程序的数据共享给其他应用程序(当然有的可能会混淆SharedPreferences)这个时候需要用到安卓开发中另外的一个组件(ContentProvider),这样的组件是不论程序是否启动,其他应用程序都可以通过该接口操作应用程序内部数据。而SharePreferences需要授权才能读写
二、配合组件ContentResolver
ContentProvider提供了接口可以访问或者修改数据,而其他应用可以使用ContentResolver提供不同的访问来请求指定数据
三、如何提供ContentProvider
1、定义一个ContentProvider继承ContentProvider
2、在AndroidManifest.xml文件注册(需要android:anthorities属性)
四、使用ContentProvider
1、介绍Uri
1.1、安卓访问Uri比如:content://study.provider/book(这里的book是请求对象是可以改变的,content是固定格式,中间部分是那个注册ContentProvider时候的那个authority属性值)
2、使用ContentResolver操作数据
2.1常见方法
getContentResolver()、insert()、delete()、update()、query()等
步骤:调用Activity的getContentResolver方法获取ContentResolver对象,根据需求调用不同的操作数据方法即可
五、常见内部ContentProvider
ContactsContract.Contacts.CONTENT_URI管理联系人
MediaStore.Audio.Media.INTERNAL_CONTENT_URI手机内音频文件
MediaStore.Images.Media.EXTERNAL_CONTENT_URI存储SD中的图片
六、监听ContentProvider数据改变
我们需要监控到ContentProvider提供数据的动态变化那么就需要使用ContentObserver(自行查看手册)