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#createReliablePipe()、または ParcelFileDescriptor#createReliableSocketPair()を使用ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)できます。

ネットワーク共有やクラウド ストレージ サービス上のファイルなど、ディスク上の実際のファイルでバックアップされていない大きなファイルを返す必要がある場合は、 を使用 StorageManager#openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) してオンデマンドでコンテンツをストリーミングすることを検討してください。

<p class="note">Intents で使用する場合は、同じ URI でここで返されるデータの適切な MIME の種類を返すように を実装 #getType する必要があります。 これにより、意図解決によってデータ MIME の種類が自動的に決定され、操作の一部として適切な一致するターゲットが選択されます。

<p class="note">他のアプリケーションとの相互運用性を高めるには、開くことができるすべての URI に対して、 で android.provider.OpenableColumns指定された列を少なくとも含むクエリもサポートすることをお勧めします。 など、追加のメタデータを指定する場合は、android.provider.MediaStore.MediaColumns#DATE_ADDEDandroid.provider.MediaStore.MediaColumns他の一般的な列をサポートすることもできます。</P>

の Java ドキュメント android.content.ContentProvider.openFile(android.net.Uri, java.lang.String)

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

こちらもご覧ください

  • <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#createReliablePipe()、または ParcelFileDescriptor#createReliableSocketPair()を使用ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)できます。

<p class="note">Intents で使用する場合は、同じ URI でここで返されるデータの適切な MIME の種類を返すように を実装 #getType する必要があります。 これにより、意図解決によってデータ MIME の種類が自動的に決定され、操作の一部として適切な一致するターゲットが選択されます。

<p class="note">他のアプリケーションとの相互運用性を高めるには、開くことができるすべての URI に対して、 で android.provider.OpenableColumns指定された列を少なくとも含むクエリもサポートすることをお勧めします。 など、追加のメタデータを指定する場合は、android.provider.MediaStore.MediaColumns#DATE_ADDEDandroid.provider.MediaStore.MediaColumns他の一般的な列をサポートすることもできます。</P>

の Java ドキュメント android.content.ContentProvider.openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal)

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

こちらもご覧ください

  • <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)

適用対象