2013-04-13 100 views
1

這是一個代碼,它返回給定URI的文件路徑。在Android中從URI獲取文件路徑時出錯

public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    //String[] projection = { MediaColumns.DATA }; 

    Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

這適用於圖庫中的圖像,因爲投影是MediaStore.Images。如何獲得所有其他目錄的文件路徑?該文件可以是文檔類型,它可以位於SD卡的任何位置。我應該搜索什麼投影文件路徑?

回答

2

問題在這裏。它僅檢查Images中的投影。所以如果文件是不同類型的,你將無法獲得路徑。將返回Exception。同時它能夠更好地使用:

int column_index = cursor.getColumnIndex(MediaColumns.DATA); 

,並使用你的ONW try-catch塊。這將防止你的應用程序崩潰

+0

謝謝!我已經解決了它。這是我做的和一些小的調整,使其工作:) – shiladitya