2013-08-23 5 views
1

Je MediaScannerConnectionClient me retourner chemin et uri comme ci-dessousComment obtenir le chemin de fichier absolu pour uri media

path=/sdcard 
uri= content://media/external/images/media/9834 

Comment trouver le chemin absolu pour le uri? J'ai essayé ci-dessous et échoué et ligne Log.d (TAG, "après nouveau fichier");
n'est pas exécuté.

On dirait qu'il ya une erreur dans l'exécution ligne

new File(new URI(uri.getPath())) 

Toute aide est très appréciée. -regards, Manju

File myFile=null; 
try { 
    myFile=new File(new URI(uri.getPath())); 
    Log.d(TAG,"after new File"); 
} catch (URISyntaxException e) { 
    e.printStackTrace(); 
} catch (IllegalArgumentException e){ 
    e.printStackTrace(); 
} 

if(myFile!=null && myFile.exists()){ 
    Log.d(TAG,"file exists"); 
    Log.d(TAG,"FilePath: "+myFile.getAbsoluteFile()); 
}else{ 
    Log.d(TAG,"given file DOESNOT exist"); 

Répondre

4

Par défaut, l'ensemble du contenu de support dans MediaStore représentés à l'aide de MediaColumn, et son flux de données contenant de la colonne DATA - chemin de fichier absolu. Ainsi, vous pouvez obtenir un chemin absolu de tous les médias stockés dans MediaStore comme ceci:

Cursor c = getContentResolver().query(
    Uri.parse"content://media/external/images/media/1"),null,null,null,null); 
c.moveToNext(); 
String path = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA)); 
c.close(); 
+0

Salut Chansuk, Merci pour votre réponse, mais votre solution ne fonctionne pas pour moi. Je reçois une chaîne et un uri en rappel après la fin du scan. J'ai essayé d'utiliser votre code pour obtenir le chemin absolu, mais il échoue. chemin:/sdcard /, uri: contenu: // media/external/images/media/7950 – Manju

+0

Quel est le résultat ou l'erreur? Dans votre cas, je pense que 'Cursor c = getContentResolver(). Query (uri, null, nul, null);' est OK, pour des informations plus détaillées vous pouvez vous référer à une question similaire - [question # 3401579] (http://stackoverflow.com/questions/3401579/get-filename-and-path-from-uri-from-mediastore?rq=1) – Chansuk

+0

Salut Chansuk, Merci pour votre réponse, mais votre solution ne fonctionne pas pour moi. Je reçois une chaîne et un uri en rappel après la fin du scan. J'ai essayé d'utiliser votre code pour obtenir le chemin absolu, mais il échoue. résultat ==>/sdcard/alors que mon uri.toString() ==> contenu: // media/external/images/media/7950 – Manju

2

J'utilise la méthode getRealPathFromURI (uri) dans la réponse de Get filename and path from uri from mediastore

pour convertir mon appareil photo retourné uri

contenu: // media/externe/images/media/35733

à

/stockage/émulé/0/DCIM/caméra/1377243 365736.jpg

+0

Salut chughes, j'ai essayé le même code mais toujours la réponse est/sdcard/iam pas sûr de ce qui est l'erreur – Manju

+0

Salut, Pouvez-vous poster votre classe complète? – chughes

Questions connexes