android之ContentProvider

来源:互联网 发布:金蝶k3仓库软件多少钱 编辑:程序博客网 时间:2024/06/05 16:54

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

如何完整的开发一个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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 异地补办身份证没有暂住证怎么办 挂科了心里难受怎么办 c1升b2考不过怎么办 b2驾照扣了1分怎么办 红绿色盲驾考怎么办 驾驶证忘带被交警查了怎么办 车子被扣45分怎么办 驾照被扣在外省交警支队怎么办 从渭南把驾照转到西安怎么办 a1a2驾驶证扣3分怎么办 车辆累计扣12分怎么办 驾照扣了40分怎么办 驾驶证扣了30分怎么办 b2驾照逾期未审怎么办 c1实习期扣6分怎么办 车子累计扣30分怎么办 实习期间扣满12分怎么办 新手驾照扣6分怎么办 a2驾驶证逾期未审验怎么办 c1驾照扣了6分怎么办 b1驾照被扣12分怎么办 b2驾驶本扣分了怎么办 驾驶本扣9分后怎么办 b1照扣12分怎么办 b2扣了15分怎么办 b2有扣分未年审怎么办 b2驾驶证扣4分怎么办 b2驾驶证扣10分怎么办 刚发驾驶证照片太丑想换怎么办! 考驾照时户口变更怎么办 驾照年审色盲未过怎么办 考驾驶证互联网注册号码怎么办 驾驶证体检视力不过关怎么办 六年驾照满了怎么办 驾照扣了40多分怎么办 一个驾照扣24分怎么办 南昌电动车牌照丢了怎么办 上海餐饮工作人员怎么办健康证 房产过户没有遗嘱公证怎么办 在外地被扣12分怎么办 公务员体检视力不过关怎么办弱视