次の方法で共有


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 で使用する場合は、ここで返されるデータの適切な MIME の種類を同じ URI で返すように実装 #getType する必要があります。 これにより、意図解決でデータ MIME の種類を自動的に決定し、操作の一環として適切な一致するターゲットを選択できるようになります。

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

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

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 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#createReliablePipe()ParcelFileDescriptor#createReliableSocketPair()を使用ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)できます。

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

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

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

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 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)

適用対象