J'essaye d'obtenir l'image de la galerie.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), resultCode );
Après mon retour de cette activité, j'ai une donnée, qui contient Uri. On dirait:
content://media/external/images/1
Comment puis-je convertir ce chemin en un vrai (comme ' /sdcard/image.png
')?
Merci
uri.getPath()
a pas donné de vrai chemin?Réponses:
Est-il vraiment nécessaire pour vous d'obtenir un chemin physique?
Par exemple,
ImageView.setImageURI()
etContentResolver.openInputStream()
vous permettent d'accéder au contenu d'un fichier sans connaître son chemin réel.la source
C'est ce que je fais:
et:
REMARQUE: la
managedQuery()
méthode est obsolète, je ne l'utilise donc pas.Dernière modification: amélioration. Nous devrions fermer le curseur !!
la source
@Rene Juuse - ci-dessus dans les commentaires ... Merci pour ce lien!
. le code pour obtenir le chemin réel est un peu différent d'un SDK à l'autre, nous avons donc ci-dessous trois méthodes qui traitent différents SDK.
getRealPathFromURI_API19 (): renvoie le chemin réel pour l'API 19 (ou supérieur mais non testé) getRealPathFromURI_API11to18 (): renvoie le chemin réel de l'API 11 vers l'API 18 getRealPathFromURI_below11 (): renvoie le chemin réel de l'API inférieur à 11
police: http://hmkcode.com/android-display-selected-image-and-its-real-path/
MISE À JOUR 2016 Mars
Pour résoudre tous les problèmes avec le chemin des images, j'essaie de créer une galerie personnalisée en tant que Facebook et d'autres applications. C'est parce que vous pouvez utiliser uniquement des fichiers locaux (fichiers réels, pas virtuels ou temporaires), je résous tous les problèmes avec cette bibliothèque.
https://github.com/nohana/Laevatein (cette bibliothèque consiste à prendre une photo de l'appareil photo ou à choisir dans la galerie, si vous choisissez dans la galerie, il a un tiroir avec des albums et affiche simplement les fichiers locaux)
la source
Remarque Il s'agit d'une amélioration de la réponse @ user3516549 et je l'ai vérifiée sur Moto G3 avec Android 6.0.1
J'ai ce problème, j'ai donc essayé la réponse de @ user3516549 mais dans certains cas, cela ne fonctionnait pas correctement. J'ai constaté que dans Android 6.0 (ou supérieur), lorsque nous démarrons l'intention de sélection d'image de la galerie, un écran s'ouvre et affiche des images récentes lorsque l'utilisateur sélectionne l'image dans cette liste, nous obtiendrons l'URI
tandis que si l'utilisateur sélectionne la galerie dans le tiroir coulissant au lieu de la récente, nous obtiendrons l'URI comme
Alors je l'ai manipulé
getRealPathFromURI_API19()
EDIT: si vous essayez d'obtenir le chemin de l'image du fichier dans la carte SD externe dans la version supérieure, vérifiez ma question
la source
EDIT: Utilisez cette solution ici: https://stackoverflow.com/a/20559175/2033223 Fonctionne parfaitement!
Tout d'abord, merci pour votre solution @luizfelipetx
J'ai un peu changé votre solution. Cela fonctionne pour moi:
Remarque: nous avons donc des documents et une image, selon que l'image provient de 'recents', 'gallery' ou quoi que ce soit d'autre. J'extraye donc d'abord l'ID de l'image avant de la rechercher.
la source
Hii voici mon code complet pour prendre des images depuis un appareil photo ou une galerie
// Ma déclaration de variable
//Sur clic
// corps de la méthode
// Et le reste des choses
la source
options.inSampleSize = calculateInSampleSize(options, 100, 100);
Cela m'a aidé à obtenir l'URI de la galerie et à le convertir en fichier pour le téléchargement en plusieurs parties
https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
la source