ContentProvider.OpenFile 方法

定义

重载

OpenFile(Uri, String)

重写此项以处理打开文件 Blob 的请求。

OpenFile(Uri, String, CancellationSignal)

重写此项以处理打开文件 Blob 的请求。

OpenFile(Uri, String)

重写此项以处理打开文件 Blob 的请求。

[Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Handler")]
public virtual Android.OS.ParcelFileDescriptor? OpenFile (Android.Net.Uri uri, string mode);
[<Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Handler")>]
abstract member OpenFile : Android.Net.Uri * string -> Android.OS.ParcelFileDescriptor
override this.OpenFile : Android.Net.Uri * string -> Android.OS.ParcelFileDescriptor

参数

uri
Uri

要打开其文件的 URI。

mode
String

文件模式的字符串表示形式。 可以是“r”、“w”、“wt”、“wa”、“rw”或“rwt”。 请注意,每个提供程序实现的确切实现可能有所不同-例如,“w”可能或可能不会截断。

返回

返回可用于访问文件的新 ParcelFileDescriptor。

属性

例外

如果没有与给定 URI 关联的文件或模式无效,则引发 FileNotFoundException。

如果调用方没有访问文件的权限,则引发 SecurityException。

注解

重写此项以处理打开文件 Blob 的请求。 默认实现始终引发 FileNotFoundException。 可以从多个线程调用此方法,如进程和线程中所述

此方法返回一个 ParcelFileDescriptor,后者直接返回给调用方。 这样就可以返回大型数据(如图像和文档),而无需复制内容。

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

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

如果需要检测返回的 ParcelFileDescriptor 何时关闭,或者远程进程已崩溃或遇到其他错误,可以使用 ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)ParcelFileDescriptor#createReliablePipe()ParcelFileDescriptor#createReliableSocketPair()

如果需要返回磁盘上实际文件不支持的大型文件(例如网络共享或云存储服务上的文件),请考虑使用 StorageManager#openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) 这将允许按需流式传输内容。

<p class=“note”>For use in Intents, you will want to implement #getType to return the appropriate MIME type for the data returned here with the same URI. 这将允许意向解析自动确定数据 MIME 类型,并选择相应的匹配目标作为其操作的一部分。

<p class=“note”>为了更好地与其他应用程序进行互操作性,建议对于可打开的任何 URI,还支持对其包含至少指定的列的 android.provider.OpenableColumns查询。 如果还有其他元数据要提供,例如 android.provider.MediaStore.MediaColumns#DATE_ADDED 在 中 android.provider.MediaStore.MediaColumns,你可能还希望支持其他常见列。</p>

适用于 . 的 android.content.ContentProvider.openFile(android.net.Uri, java.lang.String)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

  • <xref:Android.Content.ContentProvider.OpenAssetFile(Android.Net.Uri%2c+System.String)>
  • <xref:Android.Content.ContentProvider.OpenFileHelper(Android.Net.Uri%2c+System.String)>
  • GetType(Uri)
  • ParseMode(String)

适用于

OpenFile(Uri, String, CancellationSignal)

重写此项以处理打开文件 Blob 的请求。

[Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")]
public virtual Android.OS.ParcelFileDescriptor? OpenFile (Android.Net.Uri uri, string mode, Android.OS.CancellationSignal? signal);
[<Android.Runtime.Register("openFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;", "GetOpenFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")>]
abstract member OpenFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.OS.ParcelFileDescriptor
override this.OpenFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.OS.ParcelFileDescriptor

参数

uri
Uri

要打开其文件的 URI。

mode
String

文件模式的字符串表示形式。 可以是“r”、“w”、“wt”、“wa”、“rw”或“rwt”。 请注意,每个提供程序实现的确切实现可能有所不同-例如,“w”可能或可能不会截断。

signal
CancellationSignal

用于取消正在进行的操作的信号,或者 null 如果没有。 例如,如果要将文件从网络下载到服务“rw”模式请求,则应定期调用 CancellationSignal#throwIfCanceled() 以检查客户端是否已取消请求并中止下载。

返回

返回可用于访问文件的新 ParcelFileDescriptor。

属性

例外

如果没有与给定 URI 关联的文件或模式无效,则引发 FileNotFoundException。

如果调用方没有访问文件的权限,则引发 SecurityException。

注解

重写此项以处理打开文件 Blob 的请求。 默认实现始终引发 FileNotFoundException。 可以从多个线程调用此方法,如进程和线程中所述

此方法返回一个 ParcelFileDescriptor,后者直接返回给调用方。 这样就可以返回大型数据(如图像和文档),而无需复制内容。

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

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

如果需要检测返回的 ParcelFileDescriptor 何时关闭,或者远程进程已崩溃或遇到其他错误,可以使用 ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)ParcelFileDescriptor#createReliablePipe()ParcelFileDescriptor#createReliableSocketPair()

<p class=“note”>For use in Intents, you will want to implement #getType to return the appropriate MIME type for the data returned here with the same URI. 这将允许意向解析自动确定数据 MIME 类型,并选择相应的匹配目标作为其操作的一部分。

<p class=“note”>为了更好地与其他应用程序进行互操作性,建议对于可打开的任何 URI,还支持对其包含至少指定的列的 android.provider.OpenableColumns查询。 如果还有其他元数据要提供,例如 android.provider.MediaStore.MediaColumns#DATE_ADDED 在 中 android.provider.MediaStore.MediaColumns,你可能还希望支持其他常见列。</p>

适用于 . 的 android.content.ContentProvider.openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

另请参阅

  • <xref:Android.Content.ContentProvider.OpenAssetFile(Android.Net.Uri%2c+System.String)>
  • <xref:Android.Content.ContentProvider.OpenFileHelper(Android.Net.Uri%2c+System.String)>
  • GetType(Uri)
  • ParseMode(String)

适用于