ContentProvider

为让其他软件能操作自己工程中的数据数据库表,给其他软件提供了访问数据库的同一方式;这种方式就是contentprovider

作用:把应用本身的私有数据提供给其他应用使用。 
产生原因:一般应用的私有数据(数据库等)不能被其应用访问,但是如联系人、短信等数据要用第三方APP备份或者读取使用时就有冲突,所以就产生了内容提供者ContentProvider,它向其他的应用提供了访问自己私有数据的方式。关系图如下:



内容提供者给其他软件提供了访问数据库的同一方式

编写内容提供者步骤:

1.写一个类AccountContentProvider,继承了ContentProvider:public class AccountContentProvider extends ContentProvider {};

2.在清单文件中配置内容提供者,添加了provider节点,设置了android:authorities="com.itheima.db.provider.AccountContentProvider",authorities是内容提供者的主机名,就相当于一个网站的域名或者ip,可以根据这uri找到内容提供者;

3.在内容提供者的代码中实现了增删改查的方法;

3.在内容提供者中添加uri的匹配器:


// 注册uri
static {

// 注册uri
// authority:内容提供者的主机名,可以在清单文件中找到
// path:路径路,通常是表名/方法名
// code 匹配码,使用mUrimaMatcher匹配用户传递过来的uri成功时返回这个code,
// 匹配成功使用的uri字符串:content://com.itheima.db.provider.AccountContentProvider/account/insert
mUrimaMatcher.addURI("com.itheima.db.provider.AccountContentProvider",
"account/insert", INSERT_CODE);
mUrimaMatcher.addURI("com.itheima.db.provider.AccountContentProvider",
"account/query", QUERY_CODE);
mUrimaMatcher.addURI("com.itheima.db.provider.AccountContentProvider",
"account/update", UPDATE_CODE);
mUrimaMatcher.addURI("com.itheima.db.provider.AccountContentProvider",
"account/delete", DELETE_CODE);
}

在另一个工程中调运内容提供者:

        1.得到系统提供的内容提供者解析器:
ContentResolver resolver = this.getContentResolver();
2.指定内容提供者的uri:
Uri uri = Uri.parse("content://com.itheima.db.provider.AccountContentProvider/account/insert");
3.通过解析器调用内容提供者的insert方法;解析器中的增删改查的方法是与内容提供者中的增删改查方法一一对应的:
resolver.insert(uri, values



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值