我有MediaScannerConnectionClient返回路径,uri就像下面的
path=/sdcard
uri= content://media/external/images/media/9834
如何找到uri的绝对路径?我在下面试过但失败并排队
Log.d(标签,“新文件后”);
不会被执行。
看起来在执行行
时出现了一些错误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");
答案 0 :(得分: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();
答案 1 :(得分:2)
我在Get filename and path from uri from mediastore的答案中使用了getRealPathFromURI(uri)方法
将我返回的相机uri转换为
内容://媒体/外部/图像/媒体/ 35733
到
/storage/emulated/0/DCIM/Camera/1377243365736.jpg