2014-09-23 132 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