ContentProvider 介绍
用于跨进程共享数据。它提供了一套完整的方案,使得一个应用程序可以访问另一个程序的数据,进行增删改查。是Android进行跨进程共享数据的标准方式。 比如,我们可以开发自己的程序访问系统的联系人列表、通话记录、短信列表等,都是使用了 ContentProvider。
ContentProvider 使用
使用 ContentProvider 获取系统数据:
如果我们仅仅是获取系统的一些数据,直接可以通过调用 Context 的方法 getContentResolver()来获取 ContentResolver 对象。然后再调用 ContentResolver 的增删改查方法来操作数据。
具体示例:
自定义 ContentProvider :
- 用一个类继承 ContentProvider ,子类重写方法。 此时假设示例场景为给其他程序共享一个数据库。
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; }}复制代码
不难发现,基本上都是一些增删改啥方法。
- AndroidManifest.xml 中注册
复制代码
- 其余详情参考《第一行代码.郭霖著》第7章节。
参考文献:
《第一行代码.郭霖著》