У меня это работало одновременно, но теперь он терпит неудачу каждый раз, когда я пытаюсь получить путь к файлу. Я получаю файл из Acrobat Reader и могу получить имя и размер файла, но не относительный путь к файлу.Получить путь к файлу из содержимого URI
Мой код выглядит следующим образом:
if(uri.getScheme().equals("content"))
{
String[] dataFields = new String[]{
MediaStore.MediaColumns.DATA,
OpenableColumns.DISPLAY_NAME,
OpenableColumns.SIZE};
Cursor cursor = context.getContentResolver().query(uri, dataFields, null, null, null);
cursor.moveToFirst();
fileLocation = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
title = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
size = cursor.getInt(cursor.getColumnIndex(OpenableColumns.SIZE));
cursor.close();
contentType = context.getContentResolver().getType(uri);
}
Я получаю следующее сообщение об ошибке в LogCat:
Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 2 columns.
Я понимаю, как он не может найти столбец. Однако я не понимаю, как это может быть?
True ... я хочу, чтобы получить путь к файлу без «content: //» и других папок, чтобы позднее я смог открыть файл в объекте File. – Sulby
@ FireFly3000: «Я хочу получить путь к файлу» - путь к файлу отсутствует. Нет требования, чтобы данные, стоящие за 'Uri', были файлом, к которому вы можете получить доступ любым способом. Это может быть во внутреннем хранилище. Он может быть в съемном хранилище. Он может быть зашифрован. Это может быть даже не файл, а потоковое воспроизведение в реальном времени в Интернете. – CommonsWare