語言

ContentProvider.OpenAssetFile 方法

定義

多載

名稱 Description
OpenAssetFile(Uri, String)

這類似 #openFile於 ,但可以由需要能夠回傳檔案子區段(通常是資產)的提供者實作。

OpenAssetFile(Uri, String, CancellationSignal)

這類似 #openFile於 ,但可以由需要能夠回傳檔案子區段(通常是資產)的提供者實作。

OpenAssetFile(Uri, String)

這類似 #openFile於 ,但可以由需要能夠回傳檔案子區段(通常是資產)的提供者實作。

[Android.Runtime.Register("openAssetFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;", "GetOpenAssetFile_Landroid_net_Uri_Ljava_lang_String_Handler")]
public virtual Android.Content.Res.AssetFileDescriptor? OpenAssetFile(Android.Net.Uri uri, string mode);
[<Android.Runtime.Register("openAssetFile", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;", "GetOpenAssetFile_Landroid_net_Uri_Ljava_lang_String_Handler")>]
abstract member OpenAssetFile : Android.Net.Uri * string -> Android.Content.Res.AssetFileDescriptor
override this.OpenAssetFile : Android.Net.Uri * string -> Android.Content.Res.AssetFileDescriptor

參數

uri
Uri

要開啟檔案的URI。

mode
String

檔案模式的字串表示法。 可以是「r」、「w」、「wt」、「wa」、「rw」或「rwt」。 請注意,這些實作的具體實作可能因提供者而異——例如,「w」可能會截斷也可能不會截斷。

傳回

會回傳一個新的 AssetFileDescriptor,你可以用來存取該檔案。

屬性

例外狀況

如果該 URI 沒有相關檔案或該模式無效,則會拋出 FileNotFoundException。

若呼叫者無權限存取檔案,則會拋出 SecurityException。

備註

這類似 #openFile於 ,但服務提供者需要能夠回傳檔案的子區塊,通常是其 .apk 內的資產。 此方法可從多個執行緒呼叫,詳見 《程序與執行緒》一文。

如果你實作了這個,你的客戶端必須能夠處理這些檔案切片,不論是直接使用 ContentResolver#openAssetFileDescriptor,或是使用較高層次 ContentResolver#openInputStream ContentResolver.openInputStream 的方法 ContentResolver#openOutputStream ContentResolver.openOutputStream 。

回傳的 AssetFileDescriptor 可以是管線或套接字對,以實現資料串流。

如果你實作是為了回傳完整檔案,應該建立 AssetFileDescriptor AssetFileDescriptor#UNKNOWN_LENGTH 以相容於無法處理檔案子區段的應用程式。

在 Intent 中使用時,你需要實作 #getType 回傳這裡資料的適當 MIME 類型,且使用相同的 URI。 這將允許意圖解析自動決定資料 MIME 類型,並選擇適當的匹配目標作為操作的一部分。

為了與其他應用程式更好的互通性,建議對於任何可開啟的 URI,也應支援至少包含由 android.provider.OpenableColumns所指定的欄位的查詢。

Java 文件 android.content.ContentProvider.openAssetFile(android.net.Uri, java.lang.String)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

另請參閱

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

適用於

OpenAssetFile(Uri, String, CancellationSignal)

這類似 #openFile於 ,但可以由需要能夠回傳檔案子區段(通常是資產)的提供者實作。

[Android.Runtime.Register("openAssetFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;", "GetOpenAssetFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")]
public virtual Android.Content.Res.AssetFileDescriptor? OpenAssetFile(Android.Net.Uri uri, string mode, Android.OS.CancellationSignal? signal);
[<Android.Runtime.Register("openAssetFile", "(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;", "GetOpenAssetFile_Landroid_net_Uri_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")>]
abstract member OpenAssetFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.Content.Res.AssetFileDescriptor
override this.OpenAssetFile : Android.Net.Uri * string * Android.OS.CancellationSignal -> Android.Content.Res.AssetFileDescriptor

參數

uri
Uri

要開啟檔案的URI。

mode
String

檔案模式的字串表示法。 可以是「r」、「w」、「wt」、「wa」、「rw」或「rwt」。 請注意,這些實作的具體實作可能因提供者而異——例如,「w」可能會截斷也可能不會截斷。

signal
CancellationSignal

一個取消正在進行的行動的信號,或者 null 如果沒有。 例如,如果你正在從網路下載檔案以處理「rw」模式請求,你應該定期打電話 CancellationSignal#throwIfCanceled() 確認客戶端是否已取消請求並中止下載。

傳回

會回傳一個新的 AssetFileDescriptor,你可以用來存取該檔案。

屬性

例外狀況

如果該 URI 沒有相關檔案或該模式無效,則會拋出 FileNotFoundException。

若呼叫者無權限存取檔案,則會拋出 SecurityException。

備註

這類似 #openFile於 ,但服務提供者需要能夠回傳檔案的子區塊,通常是其 .apk 內的資產。 此方法可從多個執行緒呼叫,詳見 《程序與執行緒》一文。

如果你實作了這個,你的客戶端必須能夠處理這些檔案切片,不論是直接使用 ContentResolver#openAssetFileDescriptor,或是使用較高層次 ContentResolver#openInputStream ContentResolver.openInputStream 的方法 ContentResolver#openOutputStream ContentResolver.openOutputStream 。

回傳的 AssetFileDescriptor 可以是管線或套接字對,以實現資料串流。

如果你實作是為了回傳完整檔案,應該建立 AssetFileDescriptor AssetFileDescriptor#UNKNOWN_LENGTH 以相容於無法處理檔案子區段的應用程式。

在 Intent 中使用時,你需要實作 #getType 回傳這裡資料的適當 MIME 類型,且使用相同的 URI。 這將允許意圖解析自動決定資料 MIME 類型,並選擇適當的匹配目標作為操作的一部分。

為了與其他應用程式更好的互通性,建議對於任何可開啟的 URI,也應支援至少包含由 android.provider.OpenableColumns所指定的欄位的查詢。

Java 文件 android.content.ContentProvider.openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

另請參閱

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

適用於