ContentResolver - comment obtenir le nom de fichier à partir de l'Uri
J'appelle startActivityForResult avec L'intention ACTION_GET_CONTENT. Certains app me renvoie des données avec cette Uri:
contenu://media/externe/images/media/18122
Je ne sais pas si c'est une image ou une vidéo ou un contenu personnalisé. Comment puis-je utiliser ContentResolver d'obtenir le véritable nom de fichier ou le titre du contenu de cette Uri?
Être conscient qu'il ne pourrait pas un fichier. Le contenu pourrait être à venir à partir de Google Drive, ou peut-être une autre source de production de contenu à la volée. Peut-être que vous souhaitez utiliser
Certainement. Le nom était destiné uniquement à des fins d'affichage.
getContentResolver().openInputStream(uri)
à la place.Certainement. Le nom était destiné uniquement à des fins d'affichage.
OriginalL'auteur Pointer Null | 2012-11-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir de nom de fichier à partir de ce code, ou de tout autre domaine en modifiant la projection
P: Cela ne fonctionne pas pour moi. Il fonctionne si je clique sur un fichier dans un gestionnaire de fichiers, mais si je clique sur une pièce jointe dans un email que j'ai toujours l'
content://...
chaîne. Des indices?Vous n'avez probablement pas ce problème, mais j'ai publié une nouvelle réponse un peu plus bas sur la question pour obtenir le nom du fichier à la place de son chemin. stackoverflow.com/a/23270545/43790
OriginalL'auteur Durairaj Packirisamy
@Durairaj réponse est spécifique pour obtenir de la chemin d'un fichier. Si ce que vous cherchez est le fichier de nom réel (puisque vous devriez être en utilisant le Contenu de la Résolution, à quel point vous aurez probablement beaucoup de contenu://Uri), vous devez effectuer les opérations suivantes:
(Code copié à partir de Durairaj réponse et modifié)
L'élément principal à noter ici est que nous utilisons
MediaStore.MediaColumns.DISPLAY_NAME
, qui renvoie le nom réel du contenu. Vous pouvez également essayer deMediaStore.MediaColumns.TITLE
, comme je ne suis pas sûr quelle est la différence.MediaStore.MediaColumns.DISPLAY_NAME
n'est valable que pourcontent://media/
uri.ce n'est pas vrai, cette constante, c'est juste un inline alias
OpenableColumns.DISPLAY_NAME
qui est bien documenté dans le Extraction des Informations de Fichier et raisonnableContentProvider
s doit gérer cette colonne: "les Fournisseurs qui servent d'entretoises Uri doit prendre en charge au moins les colonnes de l'interrogation." à partir deOpenableColumns
.Bon point. Ce qui constitue une "entretoises" Uri? Cela inclut-il "file://" ?
OriginalL'auteur Navarr
vous pouvez obtenir de nom de fichier à partir de l'uri en utilisant la méthode ci-dessus code. si le contenu de résolution ne fonctionne pas alors utiliser CursorLoader.
OriginalL'auteur satyawan hajare
Vous pouvez utiliser la solution proposée par Durairaj avec la suite de la projection de la matrice:
MediaStore.MediaColumns.DATA
OriginalL'auteur Ander