一、内容提供者
1、分为系统自带的内容提供者和自定义的内容提供者
2、系统内容提供者:一般在数据库下/data/data/下以com.android.provider开头的包名,都是有系统内容提供者的,比如短信,联系人。获得短信,联系人信息等都是通过系统的内容提供者。
3、自定义的内容提供者:现有两个工程A和B,A中有数据库,B要访问A中私有化的数据库,但是A中的数据库外界无法直接访问,所以我们需要在A中自定义内容提供者,对外提供操作A中数据库的方法,将操作数据库的方法公开化,内容提供者提供增删改查的方法,B通过调用这些方法对A的数据库进行操作。
二、自定义内容提供者
1、定义类继承ContentProvider,并实现其中的方法()
1 public class Provider extends ContentProvider { 2 @Override 3 public boolean onCreate() { 4 // TODO Auto-generated method stub 5 return false; 6 } 7 }
2、清单文件中配置
android:authorities="myProvider"
标识,content://myProvider是要访问的内容提供者
android:exported="true"置为true,其他程序也可以访问
1 <provider android:name="com.example.myprovider.Provider" 2 android:authorities="myProvider" 3 android:exported="true"/>
三、访问内容提供者
1、获取中间人ContentResolver
2、提供uri,观察谁,就用谁的uri
3、注册内容观察者ContentObserver
比如监听系统的所有短信的变化,系统短信已经有了内容提供者,我们只需与系统短信的uri匹配上,我们就可以操作它,此时我们不需要写内容提供者