Obtenir/choisir une image à partir d'Android intégré dans l'application Galerie par programmation
Je suis en train d'ouvrir une image /photo dans la Galerie d'applications intégrée de l'intérieur de mon application.
J'ai une URI de l'image (l'image se trouve sur la carte SD).
Avez-vous des suggestions?
- J'ai mis à jour ma réponse à fournir plus de code de test pour s'assurer que vous récupérer correctement les résultats.
- regarde ma réponse, c'est une mise à jour de hcpl du code et il fonctionne pour le gestionnaire de fichiers astro et oi file manager.
- Quelqu'un doit mettre à jour la question, "Get/choisir une image à partir d'Android...". Question en cours interprète que j'ai une image et je veux le montrer via par défaut de l'application galerie.
- semble que vous avez raison. Je ne me souviens pas exactement ce que j'ai essayé de faire plus qu'un an auparavant et pour laquelle toutes les réponses (y compris celui que j'ai choisi comme solution) en fait la réponse à une autre question...
- En fait, je ne sais pas si c'est juste pour changer la question complètement. Il y a 36 personnes qui ont ajouté la question à ses favoris...
- Cette question a été répondue, étape par étape, dans ce tutoriel: [cliquez pour afficher le Didacticiel][1] [1]: stackoverflow.com/questions/30506301/...
Vous devez vous connecter pour publier un commentaire.
C'est une solution complète. J'ai juste mis à jour cet exemple de code avec les informations fournies dans la réponse ci-dessous par @mad. Vérifiez également la solution ci-dessous à partir de @Khobaib expliquant la façon de traiter avec picasa images.
Mise à jour
J'ai juste revu ma réponse originale à cette question et de créer un simple Android Studio de projet, vous pouvez les extraire à partir de github et les importer directement sur votre système.
https://github.com/hanscappelle/SO-2169649
(à noter que la sélection de fichier multiple encore besoin de travail)
Unique De Sélection D'Image
Avec le support pour les images à partir du fichier des explorateurs merci à l'utilisateur mad.
Sélection De Plusieurs Photos
Depuis que quelqu'un a demandé que les informations dans un commentaire et c'est mieux d'avoir des informations recueillies.
Définir un paramètre supplémentaire
EXTRA_ALLOW_MULTIPLE
sur l'intention:Et dans le Résultat de la manipulation de vérifier que le paramètre:
Noter que c'est uniquement pris en charge par l'API de niveau 18+.
Intent.hasExtra
est une erreur de la poste et doit être mis à jour pourdata.hasExtra
. J'ai essayé de le modifier à cet effet, mais mon montage a été rejetée; pas sûr pourquoi, dans le code actuel ne compile pas et qui ne servent qu'à embrouiller les gens plus loin.Voici une mise à jour de la finesse du code hcpl posté. mais cela fonctionne avec OI file manager, le gestionnaire de fichiers astro ET les médias de la galerie de trop (testé). donc je suppose qu'il va travailler avec chaque gestionnaire de fichiers (il existe de nombreuses autres que ceux mentionnés?). fait quelques corrections pour le code qu'il a écrit.
else return null;
dansgetPath(Uri uri)
àreturn uri.getPath();
et de se débarrasser de la premièrefilemanagerstring = selectedImageUri.getPath();
vérifier. De cette façon, vous venez de faire un appel àgetPath(Uri)
et obtenir le chemin du retour (peu importe si c'était de la Galerie ou un gestionnaire de fichiers qui a été utilisé).hcpl les méthodes de travail parfaitement pré-KitKat, mais ne fonctionne pas avec le DocumentsProvider API. Pour cela suivez tout simplement le fonctionnaire Android tutoriel pour documentproviders: https://developer.android.com/guide/topics/providers/document-provider.html -> ouvrir un document, section Bitmap.
Simplement j'ai utilisé hcpl du code et étendu: si le fichier avec l'extrait de chemin d'accès à l'image throws exception que j'ai appeler cette fonction:
Testé sur Nexus 5.
avec le code ci-dessus, j'ai traduit le code comme ci-dessous, il est peut-être plus adapté:
Je suis allé à travers la solution de @hcpl & @mad. hcpl la solution supporte bien pour l'image dans la galerie & mad fourni une meilleure solution sur le dessus de cela - il permet de charger OI/Astro/Dropbox image. Mais dans mon application, tout en travaillant sur picasa bibliothèque c'est maintenant intégré dans Android Galerie, à la fois la solution de l'échec.
J'ai cherché & analysé un peu & finalement dû venir avec un meilleur & solution élégante qui permet de surmonter cette limitation. Grâce à Dimitar Darazhanski pour son blog, qui m'a aidé dans ce cas, j'ai un peu modifié pour le rendre plus facile à comprendre. Voici ma solution va -
Check it & laissez-moi savoir si il y a un problème. Je l'ai testé & elle fonctionne bien dans tous les cas.
Espère que cela aidera tout le monde.
En supposant que vous avez un image dossier de votre carte SD répertoire pour les images seulement.
Ensuite, vous pouvez décider ce que vous voudriez faire avec le contenu de votre activité.
C'était un exemple pour récupérer le nom de chemin d'accès pour l'image, tester avec votre code juste pour s'assurer que vous pouvez gérer les résultats de revenir. Vous pouvez modifier le code nécessaire pour mieux l'adapter à vos besoins.
Mon conseil est d'essayer d'obtenir la récupération des images fonctionne correctement, je pense que le problème est le contenu d'accéder à des images sur la carte sd. Jetez un oeil à l'Affichage d'images sur carte sd.
Si vous pouvez obtenir que le haut et en cours d'exécution, sans doute par l'exemple en fournissant un bon fournisseur, vous devriez être capable de trouver un travail autour de votre code.
Me tenir à jour par la mise à jour de cette question avec votre progrès. Bonne chance
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file:///sdcard/images/* }
startActivityforResult
et la fourniture d'une activité. C'est ce que je faisais allusion à décider de ce qu'à la prochaine, mon mauvais.startActivityForResult(intent, 1);
et obtenez toujours cette erreur... Ce code est situé en dehors de l'Activité, mais j'ai une référence à l'activité et l'appel de lastartActivityForResult
méthode sur cette référence - c'est peut-être la raison?1
que votre passage dans? EssayezIMAGE_PICK
Intent.ACTION_PICK
au lieu deIntent.ACTION_GET_CONTENT
. Qu'entendez-vous parIMAGE_PICK
? Il n'existe pas une constante. J'ai aussi essayéintent.setData(Uri.fromFile(new File("/sdcard/image/")));
. J'ai essayé toutes les combinaisons possibles de ces et rien ne semble fonctionner...IMAGE_PICK
est constante pour une autre personne ayant des problèmes avec Android, je pensais que c'était une constante qui choisir l'image choisi, mais ce qui arrive quand vous avez essayé d'utiliserintent.setData(...)
, vous obtenez un message d'erreur? ou rien ne se passe?startActivityForResult
appel de méthode dans tous les cas (ACTION_GET_CONTENT
,ACTION_PICK
,setType
,setData
), essayé de supprimer le "file://" préfixe, essayé de supprimer les "*" posfix, essayé de supprimer à la fois, essayé de donner le chemin complet vers le fichier, j'ai essayé toutes les combinaisons. De l'avis qu'il ouvre l'application Galerie quand je ne parle pas de l'exacte du dossier ou le fichier et utiliser lesetType("image/*");
.c'est mon revoir à ce sujet, la collecte de toutes les informations ici, en plus d'autres débordement de pile questions. Il renvoie des images de certains fournisseur, lors de la manipulation de mémoire conditions et rotation de l'image. Il prend en charge la galerie picasa et gestionnaires de fichiers, comme la boîte de dépôt. L'utilisation est simple: en entrée, le constructeur reçoit le contenu de résolution et de l'uri. La sortie est la dernière image bitmap.
Références:
Il y a deux tutoriels utiles à propos de l'image avec sélecteur de code source téléchargeable ici:
Comment Créer Android Sélecteur d'Images
Comment Sélectionner et de Recadrer l'Image sur Android
Toutefois, l'application va être obligé de fermer un certain temps, vous pouvez résoudre le problème en ajoutant android:configChanges attribut en activité principale dans le fichier de Manifeste comme:
Il semble que l'API d'appareil photo perdu le contrôle de l'orientation, de sorte que cela va l'aider. 🙂
Étape 1 Code pour l'ouverture de la galerie pour sélectionner les photos:
Étape 2 Code pour obtenir des données en
onActivityResult
:READ_EXTERNAL_STORAGE
Pour afficher des images et des vidéos, essayez ceci:
Juste au cas où c'est utile; - je faire pour bénéficier de l'image Bitmap:
Réponses ci-dessus sont correctes. J'ai été confronté à un problème différent, où dans HTC M8 mon application se bloque lors de la sélection d'une image à partir de la galerie. Je suis de valeur null pour le chemin de l'image. J'ai corrigé et optimisé avec la solution suivante. dans la méthode onActivityResult
}
Récupérer un type de fichier spécifique
Cet exemple permet d'obtenir une copie de l'image.
Ouvrir un type de fichier spécifique
Lors de l'exécution sur 4.4 ou supérieur, vous demande d'ouvrir un fichier qui est géré par une autre application
Original source
Supplémentaires à des questions précédentes, si vous rencontrez des problèmes avec l'obtention du droit chemin(comme AndroZip) vous pouvez utiliser ceci:
Veuillez trouver la réponse à la sélection d'une seule image de la galerie
Façon la plus rapide pour ouvrir une image à partir de la galerie ou un appareil photo.
Référence d'origine : obtenez de l'image à partir de la galerie dans android par programmation
Méthode suivante va recevoir l'image de la galerie ou un appareil photo et l'afficher dans une ImageView. L'image sélectionnée sera stocké en interne.
code xml
Classe JAVA