ContentProvider.OpenFile メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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) を使用してコンテンツをオンデマンドでストリーミングすることを検討してください。
意図で使用する場合は、同じ URI でここで返されるデータに適した MIME の種類を返す #getType を実装する必要があります。 これにより、意図解決でデータ MIME の種類を自動的に決定し、操作の一部として適切な一致するターゲットを選択できるようになります。
他のアプリケーションとの相互運用性を高める場合は、開くことができるすべての URI に対して、少なくとも android.provider.OpenableColumns で指定された列を含むクエリもサポートすることをお勧めします。
android.provider.MediaStore.MediaColumns#DATE_ADDEDのandroid.provider.MediaStore.MediaColumnsなど、追加のメタデータを提供する場合は、他の一般的な列をサポートすることもできます。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
こちらもご覧ください
- <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()を使用できます。
意図で使用する場合は、同じ URI でここで返されるデータに適した MIME の種類を返す #getType を実装する必要があります。 これにより、意図解決でデータ MIME の種類を自動的に決定し、操作の一部として適切な一致するターゲットを選択できるようになります。
他のアプリケーションとの相互運用性を高める場合は、開くことができるすべての URI に対して、少なくとも android.provider.OpenableColumns で指定された列を含むクエリもサポートすることをお勧めします。
android.provider.MediaStore.MediaColumns#DATE_ADDEDのandroid.provider.MediaStore.MediaColumnsなど、追加のメタデータを提供する場合は、他の一般的な列をサポートすることもできます。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
こちらもご覧ください
- <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)