ContentProvider.OpenFile Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| 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 von 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 wenn 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.
Für die Verwendung in Intents möchten Sie implementieren #getType , um den entsprechenden MIME-Typ für die hier zurückgegebenen Daten mit demselben URI zurückzugeben. Dadurch kann die Absichtsauflösung automatisch den MIME-Datentyp ermitteln und die entsprechenden übereinstimmenden Ziele als Teil des Vorgangs auswählen.
Für eine bessere Interoperabilität mit anderen Anwendungen wird empfohlen, dass Sie für alle URIs, die geöffnet werden können, auch Abfragen unterstützen, die mindestens die durch android.provider.OpenableColumnsdie angegebenen Spalten enthalten. 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.
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 von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 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 z. B. 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 von 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 wenn 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().
Für die Verwendung in Intents möchten Sie implementieren #getType , um den entsprechenden MIME-Typ für die hier zurückgegebenen Daten mit demselben URI zurückzugeben. Dadurch kann die Absichtsauflösung automatisch den MIME-Datentyp ermitteln und die entsprechenden übereinstimmenden Ziele als Teil des Vorgangs auswählen.
Für eine bessere Interoperabilität mit anderen Anwendungen wird empfohlen, dass Sie für alle URIs, die geöffnet werden können, auch Abfragen unterstützen, die mindestens die durch android.provider.OpenableColumnsdie angegebenen Spalten enthalten. 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.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 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)