如果想要实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 ContentProvider 的方式来创建一个自己的内容提供器。
ContentProvider 类中有六个抽象方法,使用子类继承它的时候,需要将这六个方法全部重写。
public class MyProvider extends ContentProvider { @Override public boolean onCreate() { /** * 初始化内容提供器的时候调用。 * 通常会在这里完成对数据库的创建和升级等操作 * 返回值表示初始化是否成功。 * 只有当存在 ContentResolver尝试访问程序中的数据时,内容提供器才会被初始化 */ return false; } @Nullable @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { /** * 从内容提供器中查询数据。 * 使用uri参数来确定查询哪张表,projection参数用于确定查询哪些列 * selection和selectionArgs参数用于约束查询哪些行,sortOrder参数用于对结果进行排序 * 查询的结果存放在Cursor对象中返回 */ return null; } @Nullable @Override public String getType(Uri uri) { /** * 根据传入的内容URI来返回相应的MIME类型 */ return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues values) { /** * 向内容提供器中添加一条数据。 * 使用uri参数来确定要添加到的表,待添加的数据保存在values参数中 * 添加完成后,返回一个用于表示这条新记录的URI */ return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { /** * 从内容提供器中删除数据。 * 使用uri参数来确定删除哪一张表中的数据,selection和selectionArgs参数用于约束更新哪些行 * 被删除的行数将作为返回值返回 */ return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { /** * 更新内容提供器中已有的数据。 * 使用uri参数来确定更新哪一张表中的数据,新数据保存在values参数中 * 受影响的行数将作为返回值返回 */ return 0; } }
原文:http://www.cnblogs.com/woider/p/5152751.html