ContentProvider 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。
[Android.Runtime.Register("android/content/ContentProvider", DoNotGenerateAcw=true)]
public abstract class ContentProvider : Java.Lang.Object, Android.Content.IComponentCallbacks2, IDisposable
[<Android.Runtime.Register("android/content/ContentProvider", DoNotGenerateAcw=true)>]
type ContentProvider = class
inherit Object
interface IComponentCallbacks
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComponentCallbacks2
- 继承
- 派生
- 属性
- 实现
注解
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 它们封装数据并通过单个 ContentResolver 接口将其提供给应用程序。 仅当需要在多个应用程序之间共享数据时,才需要内容提供程序。 例如,联系人数据由多个应用程序使用,并且必须存储在内容提供程序中。 如果不需要在多个应用程序之间共享数据,可以直接通过 android.database.sqlite.SQLiteDatabase该数据库使用数据库。
当通过 ContentResolver 系统发出请求时,系统会检查给定 URI 的颁发机构,并将请求传递给注册到颁发机构的内容提供程序。 内容提供程序可以解释 URI 的其余部分,但需要该 URI。 该 UriMatcher 类有助于分析 URI。
需要实现的主要方法是:<调用 ul><li>#onCreate 以初始化提供程序</li><>#query,后者将数据返回给调用方</li><>#insert,后者将新数据插入内容提供程序/li,用于更新内容提供程序/<><>li 中现有数据(从内容#update提供程序<>/li<>#delete< li 中删除数据)的 li li><>#getType返回内容提供程序</li></ul 中 MIME 类型的数据>
数据访问方法(例如 #insert 和 #update)可以同时从多个线程调用,并且必须是线程安全的。 其他方法(例如 #onCreate)仅从应用程序主线程调用,并且必须避免执行较长的操作。 请参阅其预期线程行为的方法说明。
自动将请求 ContentResolver 转发到相应的 ContentProvider 实例,因此子类无需担心跨进程调用的详细信息。
<div class=“special reference”><h3>Developer Guides</h3>
有关使用内容提供程序的详细信息,请阅读 内容提供程序 开发人员指南。
</Div>
Java文档android.content.ContentProvider。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| ContentProvider() |
构造 ContentProvider 实例。 |
| ContentProvider(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
| 名称 | 说明 |
|---|---|
| CallingAttributionSource |
获取调用应用的归属源。 |
| CallingAttributionTag |
返回调用方的属性标记,该标记启动当前线程上正在处理的请求。 |
| CallingPackage |
返回调用方在当前线程上启动正在处理的请求的包名称。 |
| CallingPackageUnchecked |
返回调用方在当前线程上启动正在处理的请求的包名称。 |
| Class |
返回此 |
| Context |
检索此提供程序正在运行的上下文。 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| IsTemporary |
如果此实例是临时内容提供程序,则返回 true。 |
| JniIdentityHashCode |
获取互操作运行时分配给此Java对等的标识哈希代码。 (继承自 Object) |
| JniManagedPeerState |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| JniPeerMembers |
获取用于调用此Java对等方成员的 JNI 元数据。 |
| PeerReference |
获取此Java对等方的 JNI 对象引用。 (继承自 Object) |
| ReadPermission |
已过时.
返回对此内容提供程序进行只读访问所需的权限的名称。 - 或 - 更改从内容提供程序读取数据所需的权限。 |
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| WritePermission |
已过时.
返回对此内容提供程序的读/写访问权限所需的权限的名称。 - 或 - 更改在内容提供程序中读取和写入数据所需的权限。 |
方法
| 名称 | 说明 |
|---|---|
| ApplyBatch(IList<ContentProviderOperation>) |
重写此项以处理执行一批操作的请求,或者默认实现将循环访问这些操作并调用 |
| ApplyBatch(String, IList<ContentProviderOperation>) |
重写此项以处理执行一批操作的请求,或者默认实现将循环访问这些操作并调用 |
| AttachInfo(Context, ProviderInfo) |
实例化后,将调用它来告知内容提供程序自身。 |
| BulkInsert(Uri, ContentValues[]) |
重写此项以处理插入一组新行的请求,或者默认实现将循环访问值并调用 |
| Call(String, String, Bundle) |
调用提供程序定义的方法。 |
| Call(String, String, String, Bundle) |
调用提供程序定义的方法。 |
| Canonicalize(Uri) |
实现此策略以支持引用内容提供程序的 URI 规范化。 |
| ClearCallingIdentity() |
重置当前线程上传入 IPC 的标识。 |
| Clone() |
创建并返回此对象的副本。 (继承自 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| Delete(Uri, Bundle) |
实现此操作以处理删除一行或多行的请求。 |
| Delete(Uri, String, String[]) |
实现此操作以处理删除一行或多行的请求。 |
| Dispose() |
释放此Java对等方持有的资源。 (继承自 Object) |
| Dispose(Boolean) |
释放此Java对等方持有的资源。 (继承自 Object) |
| DisposeUnlessReferenced() |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| Dump(FileDescriptor, PrintWriter, String[]) |
将提供程序的状态打印到给定流中。 |
| DumpAsync(FileDescriptor, PrintWriter, String[]) |
将提供程序的状态打印到给定流中。 如果运行“adb shell dumpsys 活动提供程序 <provider_component_name>”,则调用此方法。 |
| Equals(Object) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetPathPermissions() |
返回对此内容提供程序的读取和/或写入访问权限所需的基于路径的权限。 |
| GetStreamTypes(Uri, String) |
客户端调用以确定此内容提供程序支持给定 URI 的数据流类型。 |
| GetType(Uri) |
实现此操作以处理给定 URI 处数据的 MIME 类型的请求。 |
| GetTypeAnonymous(Uri) |
实现此实现以处理 MIME 类型的 URI 请求,无需透露任何应受任何权限保护的内部信息。 |
| Insert(Uri, ContentValues, Bundle) |
实现此操作以处理插入新行的请求。 |
| Insert(Uri, ContentValues) |
实现此操作以处理插入新行的请求。 |
| JavaFinalize() |
已过时.
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| OnCallingPackageChanged() |
每当更改值 |
| OnConfigurationChanged(Configuration) |
若要添加此方法,始终在应用程序主线程上调用,并且不能执行较长的操作。 |
| OnCreate() |
实现此操作以在启动时初始化内容提供程序。 |
| OnLowMemory() |
若要添加此方法,始终在应用程序主线程上调用,并且不能执行较长的操作。 |
| OnTrimMemory(TrimMemory) |
当操作系统确定进程从其进程中剪裁不需要的内存是一个好时机时调用。 |
| OpenAssetFile(Uri, String, CancellationSignal) |
这类似于 |
| OpenAssetFile(Uri, String) |
这类似于 |
| OpenFile(Uri, String, CancellationSignal) |
重写此项以处理打开文件 Blob 的请求。 |
| OpenFile(Uri, String) |
重写此项以处理打开文件 Blob 的请求。 |
| OpenFileHelper(Uri, String) |
希望 |
| OpenPipeHelper(Uri, String, Bundle, Object, ContentProvider+IPipeDataWriter) |
用于实现 |
| OpenTypedAssetFile(Uri, String, Bundle, CancellationSignal) |
客户端调用以打开包含特定 MIME 类型的数据的只读流。 |
| OpenTypedAssetFile(Uri, String, Bundle) |
客户端调用以打开包含特定 MIME 类型的数据的只读流。 |
| Query(Uri, String[], Bundle, CancellationSignal) |
实现此实现以处理将参数打包到某个 |
| Query(Uri, String[], String, String[], String, CancellationSignal) |
实现此操作以处理客户端发出的查询请求,并支持取消。 |
| Query(Uri, String[], String, String[], String) |
实现此操作以处理来自客户端的查询请求。 |
| Refresh(Uri, Bundle, CancellationSignal) |
实现此功能以支持刷新通过 |
| RequireContext() |
检索此提供程序在其中运行的不可为 Null 上下文,此上下文应在之后 |
| RestoreCallingIdentity(ContentProvider+CallingIdentity) |
将当前线程上传入 IPC 的标识还原回以前返回的 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| SetPathPermissions(PathPermission[]) |
更改内容提供程序中读取和/或写入数据所需的基于路径的权限。 |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| SetReadPermission(String) |
更改从内容提供程序读取数据所需的权限。 首次创建提供程序时,通常会从其清单信息中设置此值。 |
| SetWritePermission(String) |
更改在内容提供程序中写入数据所需的权限。 首次创建提供程序时,通常会从其清单信息中设置此值。 |
| Shutdown() |
实现此操作以关闭 ContentProvider 实例。 |
| ToArray<T>() |
从此Java数组包装器创建托管数组。 (继承自 Object) |
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| Uncanonicalize(Uri) |
从以前返回的 |
| UnregisterFromRuntime() |
从互操作运行时取消注册此Java对等。 (继承自 Object) |
| Update(Uri, ContentValues, Bundle) |
实现此操作以处理更新一行或多行的请求。 |
| Update(Uri, ContentValues, String, String[]) |
实现此操作以处理更新一行或多行的请求。 |
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IJavaPeerable.Disposed() |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.Finalized() |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 (继承自 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
内容提供程序是 Android 应用程序的主要构建基块之一,为应用程序提供内容。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |