(学习笔记)ContentProvider

一、统一资源定位符(URI):
典型的URI结构如下:
content: // com.iotek.exampleprovider/ student/12
模式:内容URI的模式始终是content://
名空间:由ContentProvider来规定,用来区分不同的ContentProvider
路径:用来确定数据集合,可包含多个部分,每个部分由/隔开,一般由两个部分构成(student表示某个数据集合,12表示该数据集中某条数据)

二、ContentProvider的使用
1.访问ContentProvider
//获取一个ContentResolver实例
ContentResolver Context.getContextResolver();
2.ContentProvider查询
//ContentProvider查询
Cursor ContentResolver.query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder);
ContentProvider添加
//添加
Uri ContentResolver.insert(Uri uri,ContentValues values);
//修改
int ContentResolver.update(Uri uri,ContentValues values,String where,String[] selectionArgs);
//删除
int ContentResolver.delete(Uri uri,String where,String[] selectionArgs);

3.添加权限
//访问通讯录的权限

<uses-permission

android:name="android.permission.READ_CONTACTS"/>

三、自定义ContentProvider

1.确保是否真的需要自定义ContentProvider,其他应用必须知道Uri和数据格式,所以自定义ContentProvider使用较少

2.自定义步骤一:

设计好本地数据结构:1>ContentProvider将本地数据封装成数据库的结构;2>本地数据一般用数据库实现(也可以对自定义文件解析)

实现一个ContentProvider的子类:1>这是安卓系统访问自定义数据的接口;2>实现增删改查的接口;3>在AndroidManifest.xml中注册

3.自定义步骤二:

自定义关键字符串:1>Uri是作为provider唯一的标识;2>外界通过数据库的形式访问,所以至少需要Column

其它的业务逻辑:1>网络同步;2>广播通知;3>日志上报

四、继承ContentProvider类

public class MyProvider extends ContentProvider {

    @Override
    public boolean onCreate() {
        // 初始化工作,完成则返回true
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        // 返回查询结果,ContentResolver会收到
        return null;
    }

......

}

        <provider
            android:name="com.example.servicedemo.MyProvider"
            android:authorities="com.example.servicedemo.forprovider"

            android:exported="true"/>

></provider>

     authorities即Uri

ContentResolver中使用Uri

Uri.parse("Content://"+"com.example.servicedemo.forprovider");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值