用于跨进程共享数据。它提供了一套完整的方案,使得一个应用程序能够访问另外一个程序的数据,进行增删改查。是Android进行跨进程共享数据的标准方式。 好比,咱们能够开发本身的程序访问系统的联系人列表、通话记录、短信列表等,都是使用了 ContentProvider。java
若是咱们仅仅是获取系统的一些数据,直接能够经过调用 Context 的方法 getContentResolver()来获取 ContentResolver 对象。而后再调用 ContentResolver 的增删改查方法来操做数据。android
具体示例:Android获取手机短信和通话记录及通信录数据库
public class MyContentProvider extends ContentProvider {
public MyContentProvider() {
}
//初始化内容提供者的时候调用,能够在里面进行数据库的建立、升级操做
//,返回 ture 则表明初始化完成。注意,只有当存在 ContentResolver
//尝试访问咱们程序中的数据时,内容提供者才会被初始化
@Override
public boolean onCreate() {
return false;
}
//删除数据,可使用URI来肯定删除哪一张表中的数据,selection 和 selectionArgs 是约束条件。
@Override
public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) {
return 0;
}
/插入数据
@Override
public Uri insert(@NonNull Uri uri, ContentValues values) {
return null;
}
//查询数据
@Override
public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return null;
}
//更新数据
@Override
public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return 0;
}
//根据传入的内容URI来返回相应的 MIME 类型
@Override
public String getType(@NonNull Uri uri) {
return null;
}
}
复制代码
不难发现,基本上都是一些增删改啥方法。app
<!--authorities 用于对不一样应用进行区分的,为了规范,通常都是使用包名进行命名, 其余程序访问咱们的数据,也是经过这个路径进行访问-->
<provider android:name=".contentprovider.MyContentProvider" android:authorities="com.sjc.myapplication.provider " android:enabled="true" android:exported="true" />
复制代码
《第一行代码.郭霖著》ide