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