Freigeben über


ContentProvider.OpenFile Methode

Definition

Überlädt

OpenFile(Uri, String)

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten.

OpenFile(Uri, String, CancellationSignal)

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten.

OpenFile(Uri, String)

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten.

[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

Parameter

uri
Uri

Der URI, dessen Datei geöffnet werden soll.

mode
String

Die Zeichenfolgendarstellung des Dateimodus. Kann "r", "w", "wt", "wa", "rw" oder "rwt" sein. Bitte beachten Sie, dass sich die genaue Implementierung für jede Anbieterimplementierung unterscheiden kann – z. B. "w" kann oder nicht abgeschnitten werden.

Gibt zurück

Gibt einen neuen ParcelFileDescriptor zurück, den Sie für den Zugriff auf die Datei verwenden können.

Attribute

Ausnahmen

Löst FileNotFoundException aus, wenn dem angegebenen URI keine Datei zugeordnet ist oder der Modus ungültig ist.

Löst SecurityException aus, wenn der Aufrufer nicht über die Berechtigung zum Zugriff auf die Datei verfügt.

Hinweise

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten. Die Standardimplementierung löst immer aus FileNotFoundException. Diese Methode kann aus mehreren Threads aufgerufen werden, wie in Prozessen und Threads beschrieben.

Diese Methode gibt einen ParcelFileDescriptor zurück, der direkt an den Aufrufer zurückgegeben wird. Auf diese Weise können große Daten (z. B. Bilder und Dokumente) ohne Kopieren des Inhalts zurückgegeben werden.

Der zurückgegebene ParcelFileDescriptor gehört dem Anrufer, daher liegt es in ihrer Verantwortung, sie bei Abschluss zu schließen. Das heißt, die Implementierung dieser Methode sollte für jeden Aufruf einen neuen ParcelFileDescriptor erstellen.

Wenn sie mit dem exklusiven Modus "r" oder "w" geöffnet wird, kann der zurückgegebene PaketFileDescriptor ein Pipe- oder Socketpaar sein, um das Streamen von Daten zu ermöglichen. Das Öffnen mit den Modi "rw" oder "rwt" impliziert eine Datei auf dem Datenträger, die die Suche unterstützt.

Wenn Sie feststellen müssen, wann der zurückgegebene PaketFileDescriptor geschlossen wurde oder ob der Remoteprozess abgestürzt ist oder ein anderer Fehler aufgetreten ist, können Sie verwenden ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener), ParcelFileDescriptor#createReliablePipe()oder ParcelFileDescriptor#createReliableSocketPair().

Wenn Sie eine große Datei zurückgeben müssen, die nicht von einer echten Datei auf dem Datenträger unterstützt wird, z. B. einer Datei auf einer Netzwerkfreigabe oder einem Cloudspeicherdienst, sollten Sie die Verwendung in StorageManager#openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler) Betracht ziehen, mit der Sie die Inhalte bei Bedarf streamen können.

<p class="note">For use in Intents, you will implement #getType to return the appropriate MIME type for the data returned here with the same URI. Dadurch kann die Absichtsauflösung automatisch den MIME-Datentyp ermitteln und die entsprechenden übereinstimmenden Ziele als Teil des Vorgangs auswählen.

<p class="note">For better interoperability with other applications, it is recommended that for any URIs that can be opened, you also support queries on them containing at least the columns specified by android.provider.OpenableColumns. Sie können auch andere allgemeine Spalten unterstützen, wenn Sie zusätzliche Metadaten bereitstellen möchten, z android.provider.MediaStore.MediaColumns#DATE_ADDED . B. in android.provider.MediaStore.MediaColumns.</p>

Java-Dokumentation für android.content.ContentProvider.openFile(android.net.Uri, java.lang.String).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Weitere Informationen

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

Gilt für:

OpenFile(Uri, String, CancellationSignal)

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten.

[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

Parameter

uri
Uri

Der URI, dessen Datei geöffnet werden soll.

mode
String

Die Zeichenfolgendarstellung des Dateimodus. Kann "r", "w", "wt", "wa", "rw" oder "rwt" sein. Bitte beachten Sie, dass sich die genaue Implementierung für jede Anbieterimplementierung unterscheiden kann – z. B. "w" kann oder nicht abgeschnitten werden.

signal
CancellationSignal

Ein Signal zum Abbrechen des laufenden Vorgangs oder null wenn keines. Wenn Sie beispielsweise eine Datei aus dem Netzwerk herunterladen, um eine "rw"-Modusanforderung zu warten, sollten Sie regelmäßig aufrufen CancellationSignal#throwIfCanceled() , um zu überprüfen, ob der Client die Anforderung abgebrochen und den Download abgebrochen hat.

Gibt zurück

Gibt einen neuen ParcelFileDescriptor zurück, den Sie für den Zugriff auf die Datei verwenden können.

Attribute

Ausnahmen

Löst FileNotFoundException aus, wenn dem angegebenen URI keine Datei zugeordnet ist oder der Modus ungültig ist.

Löst SecurityException aus, wenn der Aufrufer nicht über die Berechtigung zum Zugriff auf die Datei verfügt.

Hinweise

Überschreiben Sie dies, um Anforderungen zum Öffnen eines Datei-Blobs zu verarbeiten. Die Standardimplementierung löst immer aus FileNotFoundException. Diese Methode kann aus mehreren Threads aufgerufen werden, wie in Prozessen und Threads beschrieben.

Diese Methode gibt einen ParcelFileDescriptor zurück, der direkt an den Aufrufer zurückgegeben wird. Auf diese Weise können große Daten (z. B. Bilder und Dokumente) ohne Kopieren des Inhalts zurückgegeben werden.

Der zurückgegebene ParcelFileDescriptor gehört dem Anrufer, daher liegt es in ihrer Verantwortung, sie bei Abschluss zu schließen. Das heißt, die Implementierung dieser Methode sollte für jeden Aufruf einen neuen ParcelFileDescriptor erstellen.

Wenn sie mit dem exklusiven Modus "r" oder "w" geöffnet wird, kann der zurückgegebene PaketFileDescriptor ein Pipe- oder Socketpaar sein, um das Streamen von Daten zu ermöglichen. Das Öffnen mit den Modi "rw" oder "rwt" impliziert eine Datei auf dem Datenträger, die die Suche unterstützt.

Wenn Sie feststellen müssen, wann der zurückgegebene PaketFileDescriptor geschlossen wurde oder ob der Remoteprozess abgestürzt ist oder ein anderer Fehler aufgetreten ist, können Sie verwenden ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener), ParcelFileDescriptor#createReliablePipe()oder ParcelFileDescriptor#createReliableSocketPair().

<p class="note">For use in Intents, you will implement #getType to return the appropriate MIME type for the data returned here with the same URI. Dadurch kann die Absichtsauflösung automatisch den MIME-Datentyp ermitteln und die entsprechenden übereinstimmenden Ziele als Teil des Vorgangs auswählen.

<p class="note">For better interoperability with other applications, it is recommended that for any URIs that can be opened, you also support queries on them containing at least the columns specified by android.provider.OpenableColumns. Sie können auch andere allgemeine Spalten unterstützen, wenn Sie zusätzliche Metadaten bereitstellen möchten, z android.provider.MediaStore.MediaColumns#DATE_ADDED . B. in android.provider.MediaStore.MediaColumns.</p>

Java-Dokumentation für android.content.ContentProvider.openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Weitere Informationen

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

Gilt für: