Content Provider实现数据共享 ContentResolver内容解析

本文详细介绍了如何在Android中通过Content Provider实现数据共享,包括创建自定义helper类,自定义ContentProvider并重写查询、增加、删除和更新数据的方法,以及在manifest中注册Content Provider,最后讲解了如何通过ContentResolver接收和操作数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 *  跨应用访问数据,Content provide,是Android四大组件之一
 *      作用:暴露应用内的数据
 *      注册在manifest.xml中,当应用启动时创建
 *      insert()增 update()改 delete()删 query()查
 *
 *
 *  ContentResolver 内容解析器
 *          调用ContentProvider的增删改查
 *          getContentResolver()获得此对象
 *          insert()增 update()改 delete()删 query()查
 *
 *          Content provide和ContentResolver通过Uri通讯
 *
 *          Uri 一个资源的唯一标识
 *          规范:
 *              content:// authority(Provider的完全限定名的小写形式)/表名/id
 *              content://由ContentProvide来管理
 *              authority 认证 ,ContentProvider的唯一标识
 *              path路径表名
 *              id 可以省略
 *  1、创建helper类,继承SQLiteOpenHelper
 *  2、自定义类,继承ContentProvider
 *          重写方法:query(...);
 *                  创建helper对象-->getReadableDatabase()--->Cursor db.query(..)
 *          UriMatcher 匹配URI的容器
 *          addURI(authrity,path,code)
 *          int match(uri)
 *  3、注册到manifest.xml中
 *
 *  ----接受数据Resolver
 *  1、getContentResolver()
 *  2、resolve.query(...);----Uri
 *  3、注册到manifest.xml中<queries><provider/></queries>
 *
 *  ContentUris
 *          long parseId(Uri contentUri) 从uri中解析出id
 *          Uri withAppendedId(Uri contentUri,long id) 把id到uri中返回
 *
 */

1、自定义helper类

public class DBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME="school.db";

    public DBHelper(@Nullable Context context, int version) {
        super(context, DB_NAME, null, version);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //创建表
        String sql="create table stu(" +
                "_id integer primary key autoincrement," +
                "name text," +
                "age integer" +
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值