版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自定义ContentProvider2023/9/28122023/9/28Uri实现ContentProvider目录CONTENT12参考教材:《Android应用开发项目化教程》Uri含义Uri(通用资源标志符:UniversalResourceIdentifier)用来标识唯一的数据集。1Uri作用ContentProvider通过暴露一个公共的Uri来标识唯一的数据集。ContentProvider可以控制多个数据集并为每一个数据集提供一个Uri。如果定义了一个ContentProvider,就需要同时为它的Uri定义一个常量。1Uri组成
content://user_dictionary/words
A:标准前缀,用来说明这是一个ContentProvider所控制的数据集。B:Uri的权限,它定义了是哪个ContentProvider提供这些数据。C:路径,ContentProvider使用这些路径来确定当前需要什么类型的数据。D:如果Uri中包含该部分,表示需要获取记录的ID;如果没有ID,就表示返回全部。1Uri组成示例所有联系人的Uri:content://contacts/people某个联系人的Uri:content://contacts/people/5所有图片Uri:content://media/external某个图片的Uri:content://media/external/images/media/41Uri处理工具UriMatcherUriMatcher类主要用于匹配Uri。使用步骤:①初始化UriMatcher常量UriMatcher.NO_MATCH表示不匹配任何路径,返回码是1。1Uri处理工具UriMatcherUriMatcher类主要用于匹配Uri。使用步骤:②注册需要匹配的Uri路径addURI()方法添加需要匹配的Uri,第一个参数传入标识ContentProvider的Authority字符串。第二个参数传入需要匹配的路径,这里的#代表匹配任意数字,另外还可以用*来匹配任意文本。第三个参数必须传入一个大于零的匹配码,用于match()方法对相匹配的Uri返回相对应的匹配码。1Uri处理工具UriMatcherUriMatcher类主要用于匹配Uri。使用步骤:③使用uriMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码(大于0)若无法匹配传入的Uri,抛出IllegalArgumentException异常。1Uri处理工具ContentUrisContentUris用于获取Uri路径后面的ID部分。方法:withAppendedId(uri,id)用于为路径加上ID部分parseId(uri)用于从路径中获取ID部分。Uri
uri
=
Uri.parse("content://com.yfz.Lesson/people");Uri
resultUri
=
ContentUris.withAppendedId(uri,
10);
long
personid
=
ContentUris.parseId(uri);
1实现ContentProvider自定义ContentProvider的目的如果App具有以下功能,建议使用想为其他应用提供复杂的数据或文件想允许用户将复杂的数据从自己的应用复制到其他应用中想使用搜索框架提供自定义搜索建议如果完全是在自己的应用中使用,建议直接使用SQLite数据库。2实现ContentProvider设计步骤为数据设计原始存储。文件数据“结构化”数据定义ContentProvider类及其所需方法的具体实现。定义提供程序的权限字符串、其内容URI以及列名称。添加其他可选部分。2实现ContentProvider设计数据存储使用SQLiteOpenHelper来创建和管理SQLite数据库。2实现ContentProvider设计数据存储使用SQLiteOpenHelper来创建和管理SQLite数据库。注意:表数据应始终具有一个“主键”列,提供程序将其作为与每行对应的唯一数字值加以维护。使用BaseColumns._ID是最佳选择。如果想提供位图图像或其他非常庞大的文件导向型数据,请将数据存储在一个文件中,然后间接提供这些数据,而不是直接将其存储在表中。使用二进制大型对象(BLOB)数据类型存储大小或结构会发生变化的数据。2实现ContentProvider设计内容URI内容URI是用于在提供程序中标识数据的URI。设计路径结构提供程序通常具有单一权限,该权限充当其Android内部名称。建议以package+provider构成
com.example.<appname>.provider
2实现ContentProvider设计内容URI内容URI是用于在提供程序中标识数据的URI。设计权限开发者通常通过追加指向单个表的路径来根据权限创建内容URI。路径并不限定于单个段,也无需为每一级路径都创建一个表。
com.example.<appname>.provider/table1
com.example.<appname>.provider/table2
2实现ContentProvider设计内容URI内容URI是用于在提供程序中标识数据的URI。处理内容URIIDContentProvider通过接受末尾具有行所对应ID值的内容URI来提供对表中单个行的访问。定义CursorAdapter的条件是,Cursor中的其中一个列必须是_ID。2实现ContentProvider设计内容URI内容URI是用于在提供程序中标识数据的URI。内容URI模式对传入的内容URI执行的操作
content://vider/table1:一个名为
table1
的表 content://vider/table2/dataset1:一个名为
dataset1
的表 content://vider/table2/dataset2:一个名为
dataset2
的表 content://vider/table3:一个名为
table3
的表2实现ContentProvider设计内容URI内容URI是用于在提供程序中标识数据的URI。内容URI模式可执行模式
content://vider/* 匹配提供程序中的任何内容URI content://vider/table2/*匹配表
dataset1
和表
dataset2
的内容URI, 但不匹配
table1
或
table3
的内容URI content://vider/table3/#匹配
table3
中单个行的内容URI
2实现ContentProvider实现ContentProvider类实现6个抽象方法query(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)insert(Uriuri,ContentValuesvalues))update(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs)delete(Uriuri,Stringselection,String[]selectionArgs))getType(Uriuri)onCreate()2实现ContentProvider实现ContentProvider类示例2实现ContentProvider实现ContentProvider类实现ContentProviderMIME类型两个返回MIME类型的方法:getType()返回一个MIME格式的String,后者描述内容URI参数返回的数据类型。getStreamTypes()为给定内容URI返回的文件返回一个MIME类型String数组。2实现ContentProvider实现ContentProvider类实现ContentProviderMIME类型表的MIME类型对于指向一个或多个表数据行的内容URI,getType()应该以Android供应商特有MIME格式返回MIME类型:类型部分:vnd子类型部分:
○
如果URI模式用于单个行:android.cursor.item/
○如果URI模式用于多个行:android.cursor.dir/提供程序特有部分:vnd.<name>.<type>2实现ContentProvider实现Conte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广州南沙人力资源发展有限公司一线社工招聘备考题库一套附答案详解
- 2026云南曲靖市罗平县妇幼保健院招聘编外人员18人备考题库含答案详解(黄金题型)
- 2026广东佛山市南海区大沥镇太平成远小学招聘备考题库【考试直接用】附答案详解
- 2026广东惠州市惠城区马安镇中心幼儿园招聘备考题库【预热题】附答案详解
- 2026江苏南京大学南京赫尔辛基大气与地球系统科学学院准聘长聘教师岗位(事业编制)招聘备考题库含完整答案详解【历年真题】
- 2026苏州创元集团财务有限公司招聘2人备考题库附完整答案详解【考点梳理】
- 2026年及未来5年市场数据中国重庆市在线旅游行业市场深度评估及投资策略咨询报告
- 2026浙江丽水市松阳县事业单位招聘39人备考题库含完整答案详解【夺冠系列】
- 2026江苏南京师范大学专业技术人员招聘10人备考题库附答案详解(精练)
- 人工智能教育质量监测与评价体系在区域教育治理中的角色与功能研究教学研究课题报告
- 2026年技术专利授权合同协议
- 烟花爆竹储存培训课件
- 敬老院及附属工程监理规划以及实施细则
- DG∕T 017-2021 谷物烘干机标准
- 2025至2030航运金融行业运营态势与投资前景调查研究报告
- 观鸟日记课件
- 无人机吊运培训课件
- 2025年及未来5年中国铱行业市场发展现状及投资规划建议报告
- 2025年宁波市事业单位招聘考试教师招聘考试生物学科专业知识试卷
- 《水文测验管理办法》
- 高强预应力混凝土空心方桩施工技术及施工方案探讨
评论
0/150
提交评论