四大组件 — ContentProvider

来源:互联网 发布:淘宝情趣用品店铺名 编辑:程序博客网 时间:2024/04/30 07:24
自定义内容提供者




内容提供方
1. 创建 内容提供者
1. 创建一个类,继承并实现 ContentProvider抽象类
class MyProvider extends ContentProvider{
2. 实现 其下的抽象方法
1. 创建方法
onCreate
一般 在onCreate方法中,获 数据库对象,从而可以实现 增 | 删 | 改 | 查等方法


2. 增加 | 删除 | 修改 | 查询
insert / delete / update / query / getType....


2. 注册 内容提供者
    与Activity同一个级别。
    在 清单文件中注册内容提供者
<provider 
android:name="com.example.unit6_cp_baidump3.MyProvider"
android:authorities="com.baidu.mp3"
android:exported="true">
</provider>
       name: 类   路径 内容提供者全类名路径
       authorities:Uri 域名 应用在手机中的唯一标识
       exported:权限  true | false 是否允许外部应用访问


那么!在内容提供者方 中 如何对所要操作的表进行区分呢?
内容提供方:如何区分Uri操作哪张表?
1. 创建 UriMatcher成员对象
    设置 私有 静态 常量 uriMatcher对象
private static final UriMatcher matcher=new UriMatcher( UriMatcher.NO_MATCH ):


2. 书写 静态代码块 与 添加与各表对应的Uri数据
static{
   matcher.add("域名","表名1",int 标记);
   matcher.add("域名","表名2",int 标记);
}

3. 实现 对Uri数据区分的操作
    匹配并获取 Uri标记,通过 增 | 删 | 改 | 查 方法中的uri进行判断。
int 标记=matcher.match(uri):
switch(标记)






内容获取方
1. 获取 内容解析器
    在 内容获取类中 获取内容解析器
ContentResolver resolver = getContentResolver();


2. 设置 统一资源定位Uri对象
Uri url=Uri.parse(String str);
参数:content:// 域名/数据表名
如:"content://com.bear.rikao/users"
-------------------------------------------------------------------------------------------------------
Uri 统一资源定位
在实际应用中,我们将指定对某张表进行数据操作,那么如何指定这张表呢?
我们通过  在该Uri域名后 添加指定性的 数据,从而进行区分。
如:
       content://域名/指定表名
-------------------------------------------------------------------------------------------------------


3. 通过 内容解析器 调用 增删改查等方法
resolver.insert.......





0 0