2013-04-13 11 views
1

Это код, который возвращает путь к файлу с учетом URI.Ошибка в получении пути к файлу из URI в Android

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

Смежные вопросы