2014-09-23 73 views
0

我想从文件路径获取Uri。这是文件路径:我无法从文件中获取Uri

File path = new File(Environment.getExternalStorageDirectory().toString()+File.separator+"pic/picture.jpeg"); 

我以这种方式尝试中检索的URI:

Uri uri = Uri.fromFile(path); 

但我想也使日志:Log.i("URI", "Uri dell' img " + uri + ":"); 和URI仍然是文件路径!不是,例如:“content:// ...”但是“file:// sdcard ....”

如何获得正确的uri?由于

+0

一样:内容://媒体/外部/图像/媒体/ 430 ......这就是我需要 – 2014-09-23 07:02:01

+0

打开图像我保存在我的SD卡的文件路径..意图需要尿素 – 2014-09-23 07:03:32

回答

1
public File getFileFromContentUri(final Uri uri) 
{ 
    if (uri == null || !(uri.getScheme().equals("content") || uri.toString().contains("file://"))) return null; 

    if (uri.getScheme().equals("content")) { 
     final String[] columns = new String[] {MediaStore.MediaColumns.DATA}; 
     final Cursor cursor = getContentResolver().query(uri, columns, null, null, null); 
     if (cursor == null || cursor.getCount() == 0) return null; 
     cursor.moveToFirst(); 
     final String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)); 
     if (path != null) return new File(path); 
     else return null; 
    } 
    else if (uri.toString().contains("file://")) { 
     return new File(uri.getPath()); 
    } 

    return null; 
} 
+0

更多http://stackoverflow.com/questions/20067508/get-real-path-from-uri-android-kitkat-new-storage-access-framework/20402190?noredirect=1#comment30507493_20402190 – ecle 2014-09-23 07:55:27

0

使用方法Uri.parse(path.getAbsolutePath());这种方法会给你的文件路径的URI

0
//write to this 

Uri photoUri = MediaStore.Images.Media.getContentUri("external"); 
+0

,而不是“外部”有我把文件路径? – 2014-09-23 07:19:45

+0

你能告诉我你想要哪条路?从图库或从SD卡的特定文件路径获取图像路径? – 2014-09-23 07:25:43

+0

这种方式似乎几乎是正确的..这是一个uri。这是我需要的,但现在它通常打开画廊,而不是具体的图像..路径是这样的:文件路径=新文件(Environment.getExternalStorageDirectory()。toString()+ File.separator +“pic/picture.jpeg “); – 2014-09-23 07:26:15