android之ContentProvider

======================

如何完整的开发一个ContentProvider

1.定义自己的ContentProvider类,这个类需要继承Android提供的ContentProvider基类。


2.向Android系统注册这个类,即在AndroidManifest.xml文件中注册这个ContentProvider类

在<application .../>中添加如下元素即可,

<provider android:name=".MyProvider"   =======name属性指定ContentProvider类

android:authorities="com.test.provider.MyProvider" ===========authorities相当于为该类指定域名

android:exported="true"/> ===========该ContentProvider是否允许其它应用调用该类

3.当我们通过注册文件注册后其他程序就可以通过Uri来访问Myprovider提供的数据了


Myprovider除了继承ContentProvider类之外,还要提供如下的几个方法;

->public boolean onCreate():该方法在ContentProvider创建后会被调用,其他应用程序第一次访问ContentProvider时,ContentProvider会被创建出来,并立即调用该onCreate()方法。

-> public Uri insert(Uri uri,ContentValues Values):根据Uri插入values对应的数据

-> public int delete(Uri uri,String selection,String[] selectionArgs):根据Uri删除select条件所匹配的全部记录

-> public int update(Uri uri,ContentValues Values,String selection,String[] selectionArgs):根据Uri修改select条件所匹配的全部记录。

->public Cursor query (Uri uri ,String[] projection,String selection,String selection,String[] selectionArgs,String sortorder):根据Uri查询selection条件所匹配的全部记录,其中projection就是一个列名列表,表明只选择指定的数据列。

-> public String getType(Uri uri):该方法用于返回当前Uri所代表的数据的MIME类型,如果该Uri对应数据可能包含多条记录,那么MIME类型字符串应该以vnd.android.cursor.dir/开头;如果该Uri对应的数据只包含一条记录,那么返回MIME数据类型字符串应该以vnd.android.cursor.item/开头。


这些方法并不是应用本身调用的而是给调用他的应用调用的




Uri包含三部分:content://dfdfdf/dfd

1.content://:这个部分是安卓规定的。

2.系统通过authorities定义的部分来找到操作那个ContentProvider。只要访问指定的ContentProvider,这个部分总是固定的。

3.dfd资源部分,这个部分是动态改变的


为了将Uri转换成字符串,Uri工具提供了转换parse()静态方法

Uri uri = Uri.parse("content://dfdfdf/dfd");


============

Context提供了getContentResovler()方法;


使用ContentResolver操作


->getContentResovler() 一旦获得ContentResovler对象后就可以通过下面的方法操作数据

ContentResolver cr= getContentResolver();


——>insert(Uri uri ,ContentValues values):向 Uri对应的ContentProvider中插入values对应的数据

->delete(Uri url,String where,String[] selectiongargs):删除Uri对应的ContentProvider中where提交匹配的数据。

->update(Uri uri ,ContentValues values,String where,String[] selectionArgs):更新Uri对应的ContentProvider中where提交匹配的数据。

——>query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder):查询Uri对应的ContentProvider中where提交匹配的数据


ContentProvider Uri ContentResovler 三者的关系为:ContentResovler对指定的Uri执行相应的操作,而Uri将这些操作委托给ContentProvider执行相应的操作



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值