1

我有 MediaScannerConnectionClient 返回我的路径和 uri,如下所示

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

如何找到 uri 的绝对路径?我在下面尝试但失败了,并且行 Log.d(TAG,"after new File");
不会被执行。

执行行中似乎有一些错误

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

非常感谢任何帮助。-问候,曼朱

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");
4

2 回答 2

4

默认情况下,MediaStore 中的所有媒体内容使用MediaColumn表示,其 DATA列包含数据流 - 绝对文件路径。因此,您可以获得存储在 MediaStore 中的任何媒体的绝对路径,如下所示:

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();
于 2013-08-23T07:21:04.750 回答
2

我在 GetRealPathFromURI(uri) 的答案中使用 getRealPathFromURI(uri) 方法从 Mediastore 获取文件名和路径

转换我返回的相机 uri

内容://媒体/外部/图像/媒体/35733

/storage/emulated/0/DCIM/Camera/1377243365736.jpg

于 2013-08-23T07:47:24.257 回答