《Android移动应用开发》自定义ContentProvider_第1页
《Android移动应用开发》自定义ContentProvider_第2页
《Android移动应用开发》自定义ContentProvider_第3页
《Android移动应用开发》自定义ContentProvider_第4页
《Android移动应用开发》自定义ContentProvider_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自定义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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论