到顶部
Android API
公众的摘要

内容提供者

延伸对象
实施组件回调2
java.lang.Object(java.lang.对象)
android内容。内容提供者
已知的直接子类

课程概述

内容提供商是Android应用程序的主要构建块之一,提供内容到应用程序。它们封装数据并通过单个内容解析器接口。只有当您需要共享时,才需要内容提供商多个应用程序之间的数据。例如,联系人数据由多个应用程序,并且必须存储在内容提供商中。如果您不需要在可以通过多个应用程序直接使用数据库数据操作

当通过发出请求时内容解析器系统检查给定URI的权限并传递向向授权机构注册的内容提供商发出请求。内容提供商可以解释URI的其余部分。这个UriMatcher公司类有助于解析URI。

需要实施的主要方法有:

数据访问方法(例如插入(Uri,ContentValues)更新(Uri,ContentValues,String,String[]))可以同时从多个线程调用,并且必须是线程安全的。其他方法(例如创建时())仅从应用程序调用主线程,并且必须避免执行冗长的操作。参见方法预期线程行为的描述。

请求内容解析器自动转发给相应的ContentProvider实例,因此子类不必担心跨进程调用。

开发人员指南

有关使用内容提供程序的更多信息,请阅读内容提供商开发人员指南。

总结

内部类
接口 ContentProvider。管道数据写入器<T> 接口将数据流写入管道。 
[展开]
继承的常量
来自接口android内容。组件回调2
公共建筑商
内容提供者()
构造一个ContentProvider实例。
公共方法
ContentProviderResult[] 应用批处理(数组列表<ContentProvider操作>操作)
重写此项以处理执行一批操作的请求,或者默认实现将迭代操作并调用apply(ContentProvider,ContentProviderResult[],int)在他们每个人身上。
空隙 附件信息(上下文上下文,提供商信息信息)
实例化后,调用这个函数来告诉内容提供者关于它自己。
整数 批量插入(乌里uri,内容值[]值)
重写此项以处理插入一组新行的请求,或者默认实现将迭代这些值并调用插入(Uri,ContentValues)在他们每个人身上。
捆绑 呼叫(字符串方法,字符串参数,捆绑额外费用)
调用提供者定义的方法。
乌里 规范化(乌里网址)
实现此功能以支持引用您的内容提供商。
摘要整数 删除(乌里uri,字符串选择,字符串[]选择Args)
实现此功能以处理删除一行或多行的请求。
空隙 倾倒(文件描述符fd、,字符打印流作者,字符串[]参数)
将提供程序的状态打印到给定流中。
最终的字符串 获取调用包()
返回发起请求的调用者的包名称在当前线程上处理。
最终的上下文 获取上下文()
检索运行此提供程序的上下文。
最终的路径权限[] 获取路径权限()
返回对的读和/或写访问所需的基于路径的权限此内容提供商。
最终的字符串 获取读取权限()
返回只读访问所需的权限名称此内容提供商。
字符串[] 获取流类型(乌里uri,字符串mimeTypeFilter)
由客户端调用以确定此内容提供程序支持给定的URI。
摘要字符串 获取类型(乌里uri)
实现此功能以处理对MIME类型数据的请求给定的URI。
最终的字符串 获取写入权限()
返回对的读/写访问所需权限的名称此内容提供商。
摘要乌里 插入(乌里uri,内容值值)
实现此功能以处理插入新行的请求。
空隙 on配置已更改(配置新配置)
当您的组件正在运行。此方法始终在应用程序主线程上调用,并且必须不执行长时间的操作。
摘要布尔值 创建时的回调函数()
实现此功能以在启动时初始化内容提供程序。
空隙 在低内存上()
这是在整个系统内存不足时调用的,并且主动运行的进程应该减少内存使用。此方法总是在应用程序主线程上调用,并且必须不执行长时间的操作。
空隙 onTrimMemory(调整内存)(int级)
当操作系统确定它是好的时调用进程从其进程中删除不需要的内存的时间。
资产文件描述符 打开资产文件(乌里uri,字符串模式,取消信号信号)
这就像是openFile(Uri,字符串),但可以由提供程序实现需要能够返回文件的子部分,通常是资产在他们的.apk里面。
资产文件描述符 打开资产文件(乌里uri,字符串模式)
这就像是openFile(Uri,字符串),但可以由提供程序实现需要能够返回文件的子部分,通常是资产在他们的.apk里面。
地块文件描述符 打开文件(乌里uri,字符串模式)
重写此项以处理打开文件blob的请求。
地块文件描述符 打开文件(乌里uri,字符串模式,取消信号信号)
重写此项以处理打开文件blob的请求。
<T>地块文件描述符 openPipeHelper(打开管道助手)(乌里uri,字符串mime类型,捆绑选项、T参数、,管道数据写入器<T> 功能)
用于实现的助手函数openTypedAssetFile(Uri、字符串、绑定),用于创建一个数据管道和后台线程,允许您流式传输生成的数据返回到客户端。
资产文件描述符 打开类型资产文件(乌里uri,字符串mimeTypeFilter,捆绑选项)
由客户端调用以打开包含特定的MIME类型。
资产文件描述符 打开类型资产文件(乌里uri,字符串mimeTypeFilter,捆绑选项,取消信号信号)
由客户端调用以打开包含特定的MIME类型。
摘要光标 查询(乌里uri,字符串[]投影,字符串选择,字符串[]选择参数,字符串排序顺序)
实现此功能以处理来自客户端的查询请求。
光标 查询(乌里uri,字符串[]投影,字符串选择,字符串[]选择参数,字符串排序顺序,取消信号取消信号)
实现此功能以处理来自支持取消的客户端的查询请求。
空隙 停堆,停堆()
实现此操作以关闭ContentProvider实例。
乌里 非标准化(乌里网址)
从以前返回的规范URI中删除规范化规范化(Uri)
摘要整数 更新(乌里uri,内容值值,字符串选择,字符串[]选择Args)
实现此功能以处理更新一行或多行的请求。
受保护的方法
布尔值 是临时的()
如果此实例是临时内容提供程序,则返回true。
最终的地块文件描述符 打开文件帮助程序(乌里uri,字符串模式)
希望实现的子类的便利性openFile(Uri,字符串)通过在给定URI中查找名为“_data”的列。
最终的空隙 设置路径权限(路径权限[]权限)
更改在中读取和/或写入数据所需的基于路径的权限内容提供商。
最终的空隙 设置读取权限(字符串许可)
更改从内容读取数据所需的权限供应商。
最终的空隙 设置写入权限(字符串许可)
更改读取和写入内容中数据所需的权限供应商。
[展开]
继承的方法
来自班级java.lang.Object(java.lang.对象)
来自接口android内容。组件回调
来自接口android内容。组件回调2

公共建筑商

公众的 内容提供者 ()

已在中添加API级别1

构造ContentProvider实例。内容提供商必须宣布在清单中,使用访问内容解析器、和已创建由系统自动执行,因此应用程序通常不会创建ContentProvider实例。

在构造时,对象未初始化,大多数字段和方法不可用。子类应在中初始化自己创建时(),而不是构造函数。

在应用程序主线程上创建内容提供程序应用程序启动时间。构造函数不能执行冗长的操作操作,否则应用程序启动将延迟。

公共方法

公众的ContentProviderResult[] 应用批处理 (数组列表<ContentProvider操作>操作)

已在中添加API级别5

重写此项以处理执行一批操作的请求,或者默认实现将迭代操作并调用apply(ContentProvider,ContentProviderResult[],int)在他们每个人身上。如果所有呼叫apply(ContentProvider,ContentProviderResult[],int)成功然后是a内容提供者结果具有相同数量的数组将返回有操作的元素。如果有任何呼叫如果失败,则取决于其他实现的生效数量。可以从多个线程调用此方法,如中所述过程和线程

参数
操作 要应用的操作
退换商品
  • 应用程序的结果
投掷
操作应用程序异常 如果任何操作失败,则引发。

公众空隙 附件信息 (上下文上下文,提供商信息信息)

已在中添加API级别1

实例化后,调用这个函数来告诉内容提供者关于它自己。

参数
上下文 此提供程序正在运行的上下文
信息 有关此内容提供商的注册信息

公众整数 批量插入 (乌里uri,内容值[]值)

已在中添加API级别1

重写此项以处理插入一组新行的请求,或者默认实现将迭代这些值并调用插入(Uri,ContentValues)在他们每个人身上。出于礼貌,请致电通知更改()插入后。可以从多个线程调用此方法,如中所述过程和线程

参数
uri(用户界面) 插入请求的content://URI。
要添加到数据库的column_name/value对集的数组。这一定不是无效的
退换商品
  • 插入的值数。

公众的捆绑 呼叫 (字符串方法,字符串参数,捆绑额外费用)

已在中添加API级别11

调用提供程序定义的方法。这可用于实施对于类似桌子的界面来说,更便宜和/或更不自然模型。

警告:框架不进行权限检查除了应用程序的基本功能之外,还要考虑内容提供商的这一项根本无法访问提供商。例如,它不知道是否调用执行时可能会读取或写入提供程序中的数据,因此无法强制执行个人权限。此方法的任何实现必须对传入呼叫进行自己的权限检查,以确保它们被允许。

参数
方法 要调用的方法名。框架不透明,但不应不透明无效的
参数 provider定义的String参数。可能是无效的
额外费用 provider-defined Bundle参数。可能是无效的
退换商品
  • 提供者定义的返回值。可能是无效的,这也是不实现任何调用方法的提供程序的默认值。

公众的乌里 规范化 (乌里网址)

已在中添加API等级19

实现此功能以支持引用您的内容提供商。规范URI是可以跨设备、备份/恢复和其他上下文,并且仍然能够引用到同一数据项。通常,这是通过添加查询来实现的URI的参数允许内容提供者验证传入的规范URI引用的数据与它最初用于和的数据相同,如果没有,则在当前环境中查找该数据(如果存在)。

例如,如果内容提供商包含人员和正常的URI是用人员数据库中的行索引创建的,即cananical表示可能在末尾有一个额外的查询参数,该参数指定它的目标用户。稍后使用该URI调用提供程序将显示向上显示URI的基索引行,如果不匹配或其条目name与查询参数中的名称不匹配,请对其数据库执行查询找到要操作的正确行。

如果实现对规范URI的支持,全部的来电URI(包括此URI)必须对任何他们接收的规范URI。此外,还必须实现非规范化(尿)去除任何这些URI的规范化。

此方法的默认实现返回null,表示不支持规范URI。

参数
网址 要规范化的Uri。
退换商品
  • 返回的规范表示网址,或null,如果不支持对该Uri进行规范化。

公众摘要整数 删除 (乌里uri,字符串选择,字符串[]选择Args)

已在中添加API级别1

实现此功能以处理删除一行或多行的请求。执行时应应用选择条款删除,允许操作影响目录中的多行。出于礼貌,请致电通知删除()删除后。可以从多个线程调用此方法,如中所述过程和线程

该实现负责在末尾解析出行ID如果要删除特定行,则返回URI。也就是说,客户会传入内容://联系人/人/22实现是负责在创建SQL语句时解析记录编号(22)。

参数
uri(用户界面) 要查询的完整URI,包括行ID(如果请求特定记录)。
选择 删除时应用于行的可选限制。
退换商品
  • 受影响的行数。
投掷
SQL异常

公众空隙 倾倒 (文件描述符fd、,字符打印流作者,字符串[]参数)

已在中添加API等级18

将提供程序的状态打印到给定流中。如果运行“adb shell dumpsys activity provider<providercomponent_name>”。

参数
fd公司 转储发送到的原始文件描述符。
作家 您应该将状态转储到的PrintWriter。这将是你回来后就关门了。
参数 转储请求的其他参数。

公众最终的字符串 获取调用包 ()

已在中添加API等级19

返回发起请求的调用者的包名称在当前线程上处理。返回的包裹已验证属于调用UID。退换商品无效的如果没有当前正在处理请求。

这将永远返回无效的处理时getType(Uri)getStreamTypes(Uri,字符串)请求。

投掷
安全例外 如果调用包不属于正在调用UID。

公众最终的上下文 获取上下文 ()

已在中添加API级别1

检索运行此提供程序的上下文。仅可用一次创建时()已调用--这将返回无效的在中构造函数。

公众最终的路径权限[] 获取路径权限 ()

已在中添加API级别4

返回对的读和/或写访问所需的基于路径的权限此内容提供商。可以从多个螺纹,如中所述过程和线程

公众最终的字符串 获取读取权限 ()

已在中添加API级别1

返回只读访问所需的权限名称此内容提供商。可以从多个线程,如中所述过程和线程

公众的字符串[] 获取流类型 (乌里uri,字符串mimeTypeFilter)

已在中添加API级别11

由客户端调用以确定此内容提供程序支持给定的URI。默认实现收益无效的,表示没有类型。如果您的内容提供商存储数据对于特定类型,如果MIME类型与给定的mimeTypeFilter。如果它可以执行类型转换,则返回数组与mimeTypeFilter匹配的所有支持的MIME类型的。

参数
uri(用户界面) 正在查询的内容提供程序中的数据。
mimeType过滤器 客户需要的数据类型。可能是模式,例如*\/*,用于检索所有可能的数据类型。
退换商品
  • 退换商品无效的如果没有可能的数据流给定的mimeTypeFilter。否则返回所有可用的数组具体的MIME类型。

公众摘要字符串 获取类型 (乌里uri)

已在中添加API级别1

实现此功能以处理对MIME类型数据的请求给定的URI。返回的MIME类型应以开头vnd.android.cursor.item公司对于单个记录,vnd.android.cursor.dir/用于多个项目。可以从多个线程调用此方法,如中所述过程和线程

请注意,应用程序不需要权限访问此信息;如果您的内容提供商要求阅读和/或写入权限,或者未导出,所有应用程序仍然可以调用此方法不考虑其访问权限。这使他们能够在调度意图时检索URI的MIME类型。

参数
uri(用户界面) 要查询的URI。
退换商品
  • MIME类型字符串,或无效的如果没有类型。

公众最终的字符串 获取写入权限 ()

已在中添加API级别1

返回对的读/写访问所需的权限名称此内容提供商。可以从多个线程,如中所述过程和线程

公众摘要乌里 插入 (乌里uri,内容值值)

已在中添加API级别1

实现此功能以处理插入新行的请求。出于礼貌,打电话通知更改()插入后。可以从多个线程调用此方法,如中所述过程和线程

参数
uri(用户界面) 插入请求的content://URI。这一定不是无效的
要添加到数据库的一组列名称/值对。这一定不是无效的
退换商品
  • 新插入项的URI。

公众空隙 onConfigurationChanged(配置已更改) (配置新配置)

已在中添加API级别1

当您的组件正在运行。注意,与活动不同,其他组件配置更改时从不重新启动:它们必须始终处理更改的结果,例如通过重新检索资源。

在调用此函数时,您的资源对象将被更新以返回与新配置。

有关更多信息,请阅读处理运行时更改此方法始终在应用程序主线程上调用,并且必须不执行长时间的操作。

默认的内容提供程序实现不执行任何操作。重写此方法以采取适当的操作。(内容提供商通常不关心屏幕之类的东西方向,但可能想了解区域设置更改。)

参数
新配置 新设备配置。

公众摘要布尔值 创建时的回调函数 ()

已在中添加API级别1

实现此功能以在启动时初始化内容提供程序。对上所有注册的内容提供程序调用此方法应用程序启动时的应用程序主线程。它不能执行冗长的操作,或应用程序启动将延迟。

您应该推迟重要的初始化(例如打开、,升级和扫描数据库),直到使用内容提供商(通过查询(Uri,String[],String,String[],String]),插入(Uri,ContentValues)等)。延迟初始化保持应用程序快速启动,避免不必要的工作结果不需要,并停止数据库错误(例如磁盘)停止应用程序启动。

如果使用SQLite,存取资料表是一个有用的实用程序类,可以轻松管理数据库,并将自动延迟打开,直到首次使用。如果您确实使用SQLiteOpenHelper,请确保避免调用获取可读数据库()获取可写数据库()从这个方法。(相反,覆盖onOpen(SQLiteDatabase)初始化第一次打开数据库时。)

退换商品
  • 如果提供程序成功加载,则为true,否则为false

公众空隙 在低内存上 ()

已在中添加API级别1

这是在整个系统内存不足时调用的,并且主动运行的进程应该减少内存使用。While期间通常,调用该函数的确切点没有定义当所有后台进程都被终止时,就会发生这种情况。也就是说,在达到扼杀托管进程的地步之前我们希望避免杀戮的服务和前台UI。

您应该实现此方法以释放您可能持有的任何缓存或其他不必要的资源。从该方法返回后,系统将为您执行垃圾收集。

最好,您应该实现onTrimMemory(int)组件回调2根据不同的内存需求的级别。该API可用于API级别14及更高级别,因此您应该只使用这个低内存()方法作为旧版本的备用方法,可以是被视为onTrimMemory(int)使用TRIM_MEMORY_COMPLETE(内存完整)水平。

此方法始终在应用程序主线程上调用,并且必须不执行长时间的操作。

默认的内容提供程序实现不执行任何操作。子类可以重写此方法以采取适当的操作。

公众空隙 onTrimMemory(调整内存) (int级)

已在中添加API级别14

当操作系统确定它是好的时调用进程从其进程中删除不需要的内存的时间。这将例如,当它出现在后台,但数量不足时内存以使尽可能多的后台进程运行。不得与液位的精确值进行比较,因为新的中间物可以添加值--您通常需要比较大于或等于您感兴趣的级别。

要在任何时候检索进程的当前微调级别,您可以使用ActivityManager.getMyMemoryState(RunningAppProcessInfo)

公众的资产文件描述符 打开资产文件 (乌里uri,字符串模式,取消信号信号)

已在中添加API等级19

这就像是openFile(Uri,字符串),但可以由提供程序实现需要能够返回文件的子部分,通常是资产在他们的.apk里面。可以从多个线程调用此方法,如中所述过程和线程

如果您实现了这一点,您的客户必须能够处理此类问题文件切片,可以直接使用openAssetFileDescriptor(Uri,字符串),或使用更高级别ContentResolver.openInputStream内容解析程序内容解决程序.openOutputStream方法。

返回的AssetFileDescriptor可以是要启用的管道或套接字对数据流。

如果您执行此操作以返回完整的文件,则应使用创建AssetFileDescriptor未知长度与…兼容无法处理文件子节的应用程序。

为了在Intents中使用,您需要实现getType(Uri)为此处返回的数据返回适当的MIME类型相同的URI。这将允许意向解析自动确定数据MIME键入并选择适当的匹配目标作为其操作的一部分。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列

参数
uri(用户界面) 要打开其文件的URI。
模式 文件的访问模式。对于只读访问,可以是“r”,“w”表示只写访问(擦除当前中的任何数据文件),“wa”用于对任何现有数据进行追加的只读访问,“rw”表示对任何现有数据的读写访问,“rwt”表示读以及截断任何现有文件的写访问。
信号 取消正在进行的操作的信号,或无效的如果没有。例如,如果您正在下载文件,以服务于“rw”模式请求应定期致电throwIf取消()检查是否客户端已取消请求并中止下载。
退换商品
  • 返回可用于访问的新AssetFileDescriptor文件。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问该文件的权限。

公众的资产文件描述符 打开资产文件 (乌里uri,字符串模式)

已在中添加API级别3

这就像是openFile(Uri,字符串),但可以由提供程序实现需要能够返回文件的子部分,通常是资产在他们的.apk里面。可以从多个线程调用此方法,如中所述过程和线程

如果您实现了这一点,您的客户必须能够处理此类问题文件切片,可以直接使用openAssetFileDescriptor(Uri,字符串),或使用更高级别ContentResolver.openInputStream内容解析程序内容解决程序.openOutputStream方法。

返回的AssetFileDescriptor可以是要启用的管道或套接字对数据流。

如果要实现此操作以返回完整文件应使用创建AssetFileDescriptor未知长度与…兼容无法处理文件子节的应用程序。

为了在Intents中使用,您需要实现getType(Uri)为此处返回的数据返回适当的MIME类型相同的URI。这将允许意向解析自动确定数据MIME键入并选择适当的匹配目标作为其操作的一部分。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列

参数
uri(用户界面) 要打开其文件的URI。
模式 文件的访问模式。对于只读访问,可以是“r”,“w”表示只写访问(擦除当前中的任何数据文件),“wa”用于只写访问以附加到任何现有数据,“rw”表示对任何现有数据的读写访问,“rwt”表示读以及截断任何现有文件的写访问。
退换商品
  • 返回可用于访问的新AssetFileDescriptor文件。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问该文件的权限。

公众的地块文件描述符 打开文件 (乌里uri,字符串模式)

已在中添加API级别1

覆盖此项以处理打开文件blob的请求。默认实现总是抛出文件未找到异常可以从多个线程调用此方法,如中所述过程和线程

此方法返回直接返回的ParcelFileDescriptor打电话的人。这样,大数据(如图像和文档)可以返回时未复制内容。

返回的ParcelFileDescriptor归调用者所有,因此它是他们有责任在完成后关闭它。也就是说,实施应该为每个调用创建一个新的ParcelFileDescriptor。

如果以独占的“r”或“w”模式打开,则返回ParcelFileDescriptor可以是管道或套接字对以启用流数据的。以“rw”或“rwt”模式打开意味着磁盘上的文件支持搜索。

如果需要检测返回的ParcelFileDescriptor关闭,或者远程进程崩溃或遇到其他问题错误,您可以使用打开(文件、int、android.os.Handler、android.os.ParcelFileDescriptor.OnCloseListener),创建可交付管道(),或创建可交付套接字对()

要在Intents中使用,您需要实现getType(Uri)为此处返回的数据返回适当的MIME类型相同的URI。这将允许意向解析自动确定数据MIME键入并选择适当的匹配目标作为其操作的一部分。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列如果有其他元数据,您可能还想支持其他公共列供应,例如添加日期在里面媒体商店。媒体栏

参数
uri(用户界面) 要打开其文件的URI。
模式 文件的访问模式。对于只读访问,可以是“r”,“rw”表示读写访问,“rwt”表示读写入访问截断任何现有文件。
退换商品
  • 返回可用于访问的新ParcelFileDescriptor文件。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问该文件的权限。

公众的地块文件描述符 打开文件 (乌里uri,字符串模式,取消信号信号)

已在中添加API等级19

重写此项以处理打开文件blob的请求。默认实现总是抛出文件未找到异常可以从多个线程调用此方法,如中所述过程和线程

此方法返回直接返回的ParcelFileDescriptor打电话的人。这样,大数据(如图像和文档)可以返回时未复制内容。

返回的ParcelFileDescriptor归调用者所有,因此它是他们有责任在完成后关闭它。也就是说,实施应该为每个调用创建一个新的ParcelFileDescriptor。

如果以独占的“r”或“w”模式打开,则返回ParcelFileDescriptor可以是管道或套接字对以启用流数据的。以“rw”或“rwt”模式打开意味着磁盘上的文件支持寻求。

如果需要检测返回的ParcelFileDescriptor关闭,或者远程进程崩溃或遇到其他问题错误,您可以使用打开(文件、int、android.os.Handler、android.os.ParcelFileDescriptor.OnCloseListener),创建可交付管道(),或创建可交付套接字对()

为了在Intents中使用,您需要实现getType(Uri)为此处返回的数据返回适当的MIME类型相同的URI。这将允许意向解析自动确定数据MIME键入并选择适当的匹配目标作为其操作的一部分。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列如果有其他元数据,您可能还想支持其他公共列供应,例如添加日期在里面媒体商店。媒体栏

参数
uri(用户界面) 要打开其文件的URI。
模式 文件的访问模式。对于只读访问,可以是“r”,“w”表示只读访问,“rw”表示读写访问,或“rwt”用于截断任何现有的读写访问文件。
信号 取消正在进行的操作的信号,或无效的如果没有。例如,如果您正在下载从网络发送文件以服务“rw”模式请求,您应定期致电throwIf取消()检查是否客户端已取消请求并中止下载。
退换商品
  • 返回可用于访问的新ParcelFileDescriptor文件。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问该文件的权限。

公众的地块文件描述符 openPipeHelper(打开管道助手) (乌里uri,字符串mime类型,捆绑选项、T参数、,管道数据写入器<T> 功能)

已在中添加API级别11

用于实现的助手函数openTypedAssetFile(Uri、字符串、绑定),用于创建一个数据管道和后台线程,允许您流式传输生成的数据返回到客户端。此函数返回一个新的应返回给调用方(调用方)的ParcelFileDescriptor负责关闭它)。

参数
uri(用户界面) 要写入其数据的URI。
mime类型 要写入的所需数据类型。
opts选项 呼叫者提供的选项。
参数 您自己的自定义参数。
函数 实现实际功能的接口流式传输数据。
退换商品
  • 返回一个新的ParcelFileDescriptor,其中包含管子。这应该返回给来电者阅读;来电者完成后负责关闭。

公众的资产文件描述符 打开类型资产文件 (乌里uri,字符串mimeTypeFilter,捆绑选项)

已在中添加API级别11

由客户端调用以打开包含特定的MIME类型。这就像是openAssetFile(Uri,字符串),但文件只能是只读的,内容提供商可以执行数据转换以生成所需类型的数据。

默认实现将给定的mimeType与的结果getType(Uri)如果匹配,只需调用openAssetFile(Uri,字符串)

请参见剪辑数据有关使用和实现的示例这种方法。

返回的AssetFileDescriptor可以是要启用的管道或套接字对数据流。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列如果有其他元数据,您可能还想支持其他公共列供应,例如添加日期在里面媒体商店。媒体栏

参数
uri(用户界面) 正在查询的内容提供程序中的数据。
mimeType过滤器 客户需要的数据类型。可能是模式,例如*\/*,如果调用方没有特定类型要求;在这种情况下,内容提供商将选择最好的与模式匹配的类型。
opts选项 来自客户端的其他选项。的定义这些特定于被调用的内容提供程序。
退换商品
  • 返回客户端可以从中访问的新AssetFileDescriptor读取所需类型的数据。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问数据的权限。
非法数据异常 如果内容提供程序不支持请求的MIME类型。

公众的资产文件描述符 打开类型资产文件 (乌里uri,字符串mimeTypeFilter,捆绑选项,取消信号信号)

已在中添加API等级19

由客户端调用以打开包含特定的MIME类型。这就像是openAssetFile(Uri,字符串),但文件只能是只读的,内容提供商可以执行数据转换以生成所需类型的数据。

默认实现将给定的mimeType与的结果getType(Uri)如果匹配,只需调用openAssetFile(Uri,字符串)

请参见剪辑数据有关使用和实现的示例这种方法。

返回的AssetFileDescriptor可以是要启用的管道或套接字对数据流。

为了更好地与其他应用程序互操作,建议使用对于任何可以打开的URI,您还支持对其进行查询至少包含由指定的列可打开的列如果有其他元数据,您可能还想支持其他公共列供应,例如添加日期在里面媒体商店。媒体栏

参数
uri(用户界面) 正在查询的内容提供程序中的数据。
mimeType筛选器 客户需要的数据类型。可能是模式,例如*\/*,如果调用方没有特定类型要求;在这种情况下,内容提供商将选择最好的与模式匹配的类型。
opts选项 来自客户端的其他选项。的定义这些特定于被调用的内容提供程序。
信号 取消正在进行的操作的信号,或无效的如果没有。例如,如果您正在下载从网络发送文件以服务“rw”模式请求,您应定期致电throwIf取消()检查是否客户端已取消请求并中止下载。
退换商品
  • 返回客户端可以从中访问的新AssetFileDescriptor读取所需类型的数据。
投掷
文件未找到异常 如果存在,则引发FileNotFoundException没有与给定URI关联的文件或模式无效。
安全例外 如果调用方抛出SecurityException没有访问数据的权限。
非法数据异常 如果内容提供程序不支持请求的MIME类型。

公众摘要光标 查询 (乌里uri,字符串[]投影,字符串选择,字符串[]选择参数,字符串排序顺序)

已在中添加API级别1

实现此功能以处理来自客户端的查询请求。可以从多个线程调用此方法,如中所述过程和线程

客户端调用示例:

//请求特定记录。游标managedCursor=managedQuery(ContentUris.withAppendedId(联系人.People.CONTENT_URI,2),投影,//返回哪些列。null,//WHERE子句。null,//WHERE子句值替换人。名称+“ASC”);//排序顺序。
实施示例:

//SQLiteQueryBuilder是创建//正确的SQL语法。SQLiteQueryBuilder qBuilder=新SQLiteQueryBuilder();//设置我们要查询的表。qBuilder.setTables(DATABASE_TABLE_NAME);//如果查询以特定的记录号结束,则//被要求提供特定记录,因此设置//查询中的WHERE子句。if((URI_MATCHER.match(URI))==特定消息){qBuilder.appendWhere(“_id=”+uri.getPathLeafId());}//进行查询。光标c=qBuilder.query(mDb,投影,选择,选择参数,分组依据,有,sortOrder);c.setNotificationUri(getContext().getContentResolver(),uri);返回c;

参数
uri(用户界面) 要查询的URI。这将是客户端发送的完整URI;如果客户端请求特定记录,URI将以记录号结尾实现应该解析并添加到WHERE或HAVING子句,指定id值。
投影 要放入光标的列的列表。如果无效的包括所有列。
选择 筛选行时要应用的选择条件。如果无效的则包括所有行。
选择参数 你可以包括在内吗?选择中的,将替换为selectionArgs中的值,以便它们出现在选择中。这些值将被绑定为字符串。
sortOrder(排序顺序) 游标中的行应如何排序。如果无效的然后提供者可以自由定义排序顺序。
退换商品
  • 光标或无效的

公众的光标 查询 (乌里uri,字符串[]投影,字符串选择,字符串[]选择参数,字符串排序顺序,取消信号取消信号)

已在中添加API级别16

实现此功能以处理来自支持取消的客户端的查询请求。可以从多个线程调用此方法,如中所述过程和线程

客户端调用示例:

//请求特定记录。游标managedCursor=managedQuery(ContentUris.withAppendedId(联系人.People.CONTENT_URI,2),投影,//返回哪些列。null,//WHERE子句。null,//WHERE子句值替换人。名称+“ASC”);//排序顺序。
实施示例:

//SQLiteQueryBuilder是创建//正确的SQL语法。SQLiteQueryBuilder qBuilder=新SQLiteQueryBuilder();//设置我们要查询的表。qBuilder.setTables(DATABASE_TABLE_NAME);//如果查询以特定的记录号结束,则//被要求提供特定记录,因此设置//查询中的WHERE子句。if((URI_MATCHER.match(URI))==特定消息){qBuilder.appendWhere(“_id=”+uri.getPathLeafId());}//进行查询。光标c=qBuilder.query(mDb,投影,选择,选择参数,分组依据,有,sortOrder);c.setNotificationUri(getContext().getContentResolver(),uri);返回c;

如果实现此方法,则还必须实现查询(Uri,String[],String,String[],String])不需要取消确保在中的旧版本Android Framework上正确运行的信号取消信号过载不可用。

参数
uri(用户界面) 要查询的URI。这将是客户端发送的完整URI;如果客户端请求特定记录,URI将以记录号结尾实现应该解析并添加到WHERE或HAVING子句,指定该id值。
投影 要放入光标中的列的列表。如果无效的包括所有列。
选择 筛选行时要应用的选择条件。如果无效的然后包括所有行。
选择参数 你可以包括在内吗?选择中的,将替换为selectionArgs中的值,以便它们出现在选择中。这些值将被绑定为字符串。
sortOrder(排序顺序) 游标中的行应如何排序。如果无效的然后提供者可以自由定义排序顺序。
取消信号 取消正在进行的操作的信号,或无效的如果没有。如果操作被取消,则操作已取消异常将被抛出执行查询时。
退换商品
  • 光标或无效的

公众空隙 停堆,停堆 ()

已在中添加API级别11

实现此操作以关闭ContentProvider实例。然后你可以在单元测试中调用此方法。

Android通常处理ContentProvider的启动和关闭自动。您不需要启动或关闭内容提供商。在ContentProvider上调用测试方法时,但是,ContentProvider实例会启动并在之后继续运行测试结束,即使后续测试实例化了另一个测试内容提供商。冲突的发展是因为这两个实例通常针对相同的底层数据源运行(例如sqlite数据库)。

实现shutDown()通过提供一种终止ContentProvider。此方法还可以防止内存泄漏从ContentProvider的多个实例化,它可以确保通过允许您完全清理测试来进行单元测试隔离进行下一次测试前进行固定。

公众的乌里 非标准化 (乌里网址)

已在中添加API等级19

从以前返回的规范URI中删除规范化规范化(Uri)。例如,如果您的实现要添加用于规范化URI的查询参数,此方法可以简单地将任何URI上的查询参数。默认实现总是返回相同的网址那是传来的。

参数
网址 要从中删除任何规范化的Uri。
退换商品
  • 返回的非规范表示形式网址,返回这个网址as-is表示无事可做,如果在中找不到由规范表示标识的数据当前环境。

公众摘要整数 更新 (乌里uri,内容值值,字符串选择,字符串[]选择Args)

已在中添加API级别1

实现此功能以处理更新一行或多行的请求。实现应更新与所选内容匹配的所有行根据提供的值映射设置列。出于礼貌,请致电通知更改()更新后。可以从多个线程调用此方法,如中所述过程和线程

参数
uri(用户界面) 要查询的URI。如果出现以下情况,则可能具有记录ID是特定记录的更新请求。
要在数据库中更新的一组列名称/值对。这一定不是无效的
选择 用于匹配要更新的行的可选筛选器。
退换商品
  • 受影响的行数。

受保护的方法

受保护的布尔值 是临时的 ()

已在中添加API级别1

如果此实例是临时内容提供程序,则返回true。

退换商品
  • 如果此实例是临时内容提供程序,则为true

受保护的最终的地块文件描述符 打开文件帮助程序 (乌里uri,字符串模式)

已在中添加API级别1

希望实现的子类的便利性openFile(Uri,字符串)通过在给定URI中查找名为“_data”的列。

参数
uri(用户界面) 要打开的URI。
模式 文件模式。对于只读访问,可以是“r”,“w”表示只写访问(擦除当前中的任何数据文件),“wa”用于对任何现有数据进行追加的只读访问,“rw”表示对任何现有数据的读写访问,“rwt”表示读以及截断任何现有文件的写访问。
退换商品
  • 返回可由客户端访问该文件。

受保护的最终空隙 设置路径权限 (路径权限[]权限)

已在中添加API级别4

更改在中读取和/或写入数据所需的基于路径的权限内容提供商。这通常是从清单中为您设置的首次创建提供程序时的信息。

参数
权限 路径权限描述数组。

受保护的最终空隙 设置读取权限 (字符串许可)

已在中添加API级别1

更改从内容读取数据所需的权限供应商。这通常是从清单信息中为您设置的首次创建提供程序时。

参数
许可 只读访问所需的权限的名称。

受保护的最终空隙 设置写入权限 (字符串许可)

已在中添加API级别1

更改读取和写入内容中数据所需的权限供应商。这通常是从清单信息中为您设置的首次创建提供程序时。

参数
许可 读/写访问所需的权限的名称。