ContentProvider.OpenAssetFile 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| OpenAssetFile(Uri, String) |
這類似 |
| OpenAssetFile(Uri, String, CancellationSignal) |
這類似 |
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所指定的欄位的查詢。
本頁部分內容為基於 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)