ContentProvider.OpenFile Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
OpenFile(Uri, String) |
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers. |
OpenFile(Uri, String, CancellationSignal) |
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers. |
OpenFile(Uri, String)
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers.
[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
Paramètres
- uri
- Uri
URI dont le fichier doit être ouvert.
- mode
- String
Représentation sous forme de chaîne du mode fichier. Peut être « r », « w », « wt », « wa », « rw » ou « rwt ». Notez que l’implémentation exacte de ces éléments peut différer pour chaque implémentation de fournisseur , par exemple, « w » peut ou ne pas tronquer.
Retours
Retourne un nouveau ParcelFileDescriptor que vous pouvez utiliser pour accéder au fichier.
- Attributs
Exceptions
Lève FileNotFoundException s’il n’existe aucun fichier associé à l’URI donné ou si le mode n’est pas valide.
Lève SecurityException si l’appelant n’a pas l’autorisation d’accéder au fichier.
Remarques
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers. L’implémentation par défaut lève FileNotFoundException
toujours . Cette méthode peut être appelée à partir de plusieurs threads, comme décrit dans Processus et Threads.
Cette méthode retourne un ParcelFileDescriptor, qui est retourné directement à l’appelant. De cette façon, des données volumineuses (telles que des images et des documents) peuvent être retournées sans copier le contenu.
Le ParcelFileDescriptor retourné appartient à l’appelant. Il incombe donc de le fermer lorsqu’il est terminé. Autrement dit, l’implémentation de cette méthode doit créer un nouveau ParcelFileDescriptor pour chaque appel.
S’il est ouvert avec les modes exclusifs « r » ou « w », le ColisFileDescriptor retourné peut être une paire de canal ou de socket pour activer la diffusion en continu de données. L’ouverture avec les modes « rw » ou « rwt » implique un fichier sur le disque qui prend en charge la recherche.
Si vous devez détecter le moment où le ParcelFileDescriptor retourné a été fermé, ou si le processus distant a bloqué ou rencontré une autre erreur, vous pouvez utiliser ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)
, ParcelFileDescriptor#createReliablePipe()
ou ParcelFileDescriptor#createReliableSocketPair()
.
Si vous devez retourner un fichier volumineux qui n’est pas sauvegardé par un fichier réel sur le disque, tel qu’un fichier sur un partage réseau ou un service de stockage cloud, envisagez d’utiliser StorageManager#openProxyFileDescriptor(int, android.os.ProxyFileDescriptorCallback, android.os.Handler)
ce qui vous permettra de diffuser le contenu à la demande.
<p class="remarque">Pour une utilisation dans intentions, vous devez implémenter #getType
pour renvoyer le type MIME approprié pour les données retournées ici avec le même URI. Cela permet à la résolution d’intention de déterminer automatiquement le type MIME de données et de sélectionner les cibles correspondantes appropriées dans le cadre de son opération.
<p class="remarque">Pour une meilleure interopérabilité avec d’autres applications, il est recommandé que pour toutes les URI qui peuvent être ouvertes, vous prenez également en charge les requêtes sur celles-ci contenant au moins les colonnes spécifiées par android.provider.OpenableColumns
. Vous pouvez également prendre en charge d’autres colonnes courantes si vous avez des métadonnées supplémentaires à fournir, comme android.provider.MediaStore.MediaColumns#DATE_ADDED
dans android.provider.MediaStore.MediaColumns
.</p>
Documentation Java pour android.content.ContentProvider.openFile(android.net.Uri, java.lang.String)
.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
Voir aussi
- <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)
S’applique à
OpenFile(Uri, String, CancellationSignal)
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers.
[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
Paramètres
- uri
- Uri
URI dont le fichier doit être ouvert.
- mode
- String
Représentation sous forme de chaîne du mode fichier. Peut être « r », « w », « wt », « wa », « rw » ou « rwt ». Notez que l’implémentation exacte de ces éléments peut différer pour chaque implémentation de fournisseur , par exemple, « w » peut ou ne pas tronquer.
- signal
- CancellationSignal
Signal d’annulation de l’opération en cours, ou null
s’il n’en a pas. Par exemple, si vous téléchargez un fichier à partir du réseau pour traiter une demande en mode « rw », vous devez régulièrement appeler CancellationSignal#throwIfCanceled()
pour vérifier si le client a annulé la demande et abandonner le téléchargement.
Retours
Retourne un nouveau ParcelFileDescriptor que vous pouvez utiliser pour accéder au fichier.
- Attributs
Exceptions
Lève FileNotFoundException s’il n’existe aucun fichier associé à l’URI donné ou si le mode n’est pas valide.
Lève SecurityException si l’appelant n’a pas l’autorisation d’accéder au fichier.
Remarques
Remplacez cette option pour gérer les demandes d’ouverture d’un objet blob de fichiers. L’implémentation par défaut lève FileNotFoundException
toujours . Cette méthode peut être appelée à partir de plusieurs threads, comme décrit dans Processus et Threads.
Cette méthode retourne un ParcelFileDescriptor, qui est retourné directement à l’appelant. De cette façon, des données volumineuses (telles que des images et des documents) peuvent être retournées sans copier le contenu.
Le ParcelFileDescriptor retourné appartient à l’appelant. Il incombe donc de le fermer lorsqu’il est terminé. Autrement dit, l’implémentation de cette méthode doit créer un nouveau ParcelFileDescriptor pour chaque appel.
S’il est ouvert avec les modes exclusifs « r » ou « w », le ColisFileDescriptor retourné peut être une paire de canal ou de socket pour activer la diffusion en continu de données. L’ouverture avec les modes « rw » ou « rwt » implique un fichier sur le disque qui prend en charge la recherche.
Si vous devez détecter le moment où le ParcelFileDescriptor retourné a été fermé, ou si le processus distant a bloqué ou rencontré une autre erreur, vous pouvez utiliser ParcelFileDescriptor#open(File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener)
, ParcelFileDescriptor#createReliablePipe()
ou ParcelFileDescriptor#createReliableSocketPair()
.
<p class="remarque">Pour une utilisation dans intentions, vous devez implémenter #getType
pour renvoyer le type MIME approprié pour les données retournées ici avec le même URI. Cela permet à la résolution d’intention de déterminer automatiquement le type MIME de données et de sélectionner les cibles correspondantes appropriées dans le cadre de son opération.
<p class="remarque">Pour une meilleure interopérabilité avec d’autres applications, il est recommandé que pour toutes les URI qui peuvent être ouvertes, vous prenez également en charge les requêtes sur celles-ci contenant au moins les colonnes spécifiées par android.provider.OpenableColumns
. Vous pouvez également prendre en charge d’autres colonnes courantes si vous avez des métadonnées supplémentaires à fournir, comme android.provider.MediaStore.MediaColumns#DATE_ADDED
dans android.provider.MediaStore.MediaColumns
.</p>
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
Voir aussi
- <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)