Je voudrais obtenir le chemin complet du fichier, à partir d'un URI. L'URI n'est pas une image, mais c'est un fichier de musique, mais si je le fais comme la solution MediaStore, cela ne fonctionnera pas si l'utilisateur de l'application sélectionne par exemple Astro comme navigateur, au lieu de Music Player. Comment résoudre ce problème?
99
content://
ou tout autre Uri non-fichier.La méthode PathUtil ne fonctionnera que dans ci-dessous oreo et si elle est oreo, elle risque de planter car dans oreo, nous n'obtiendrons pas l'id mais le chemin complet dans data.getData () donc tout ce que vous avez à faire est de créer un fichier à partir de uri et obtenez son chemin depuis getPath () et divisez-le. Ci-dessous se trouve le code de travail: -
Le code ci-dessus fonctionnera dans oreo et s'il est inférieur à oreo, PathUtil fonctionnera.Merci!
PathUtil.java
la source
Obtenir le chemin de l'URI Utilisez la classe ci-dessous pour toutes les versions d'Android. accéder à tout type de fichier .
la source
Essaye ça.
la source
null
Vous pouvez utiliser get File path à partir de différentes versions du SDk
Utilisez RealPathUtils pour cela
** Maintenant, récupérez le chemin du fichier à partir de l'URI **
la source
l'une des réponses qui existe sur la page en cours ( cette ), est correcte mais elle comporte quelques erreurs. par exemple, cela ne fonctionnera pas sur les appareils dotés de l'API 29+. Je vais mettre à jour le code ci-dessus et publier sa nouvelle version. Je pense que ce message devrait être marqué comme la réponse finale.
Code mis à jour: ( Ajout du support WhatsApp )
la source
dans le fichier build.gradle ajoutez ceci
Maintenant, appelez
FileUtils.getPath(context, uri);
de votre classe principale.la source
Je sais que cela a déjà été répondu, mais il y a des problèmes que j'ai trouvés dans les commentaires. J'ai trouvé une excellente solution fiable à partir d' ici
pour l'utiliser
File file=FileUtils.getFile(uri);
la source
Extrait de code lorsque vous recevez le chemin du fichier.
Ci-dessous est une classe accessible en créant un nouvel objet. vous devrez également ajouter une dépendance dans gradel
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
la source
Pour obtenir n'importe quel chemin de fichier, utilisez ceci (extrait de https://github.com/iPaulPro/aFileChooser )
la source
Réponse de @SAParkhid sur kotlin.
la source
J'ai eu du mal à essayer de comprendre cela sur Xamarin. À partir des suggestions ci-dessus, j'ai trouvé cette solution.
la source
Android 7.0
Column_Index est-1
lors de la sélection d'un fichier en utilisantActionContentGet
et tapez*/*
pour disons un PDFla source