自定义内容提供者
内容提供方
1. 创建 内容提供者
1. 创建一个类,继承并实现 ContentProvider抽象类
class MyProvider extends ContentProvider{
2. 实现 其下的抽象方法
1. 创建方法
onCreate
一般 在onCreate方法中,获 数据库对象,从而可以实现 增 | 删 | 改 | 查等方法
2. 增加 | 删除 | 修改 | 查询
insert / delete / update / query / getType....
2. 注册 内容提供者
与Activity同一个级别。
在 清单文件中注册内容提供者
android:name="com.example.unit6_cp_baidump3.MyProvider"
android:authorities="com.baidu.mp3"
android:exported="true">
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.......