Как извлечь имя файла из URI, возвращаемого из intent.action_get_content?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как извлечь имя файла из URI, возвращаемого из intent.action_get_content?

Сообщение Anonymous »

Я использую сторонний файловый менеджер для выбора файла (PDF в моем случае) из файловой системы. < /p>

вот как я запускаю активность: < /strong> < /p>

Код: Выделить всё

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(getString(R.string.app_pdf_mime_type));
intent.addCategory(Intent.CATEGORY_OPENABLE);

String chooserName = getString(R.string.Browse);
Intent chooser = Intent.createChooser(intent, chooserName);

startActivityForResult(chooser, ActivityRequests.BROWSE);
< /code>

 Это то, что я имею в OnactivityResult < /code>: < /strong> < /p>

Uri uri = data.getData();
if (uri != null) {
if (uri.toString().startsWith("file:")) {
fileName = uri.getPath();
} else { // uri.startsWith("content:")

Cursor c = getContentResolver().query(uri, null, null, null, null);

if (c != null && c.moveToFirst()) {

int id = c.getColumnIndex(Images.Media.DATA);
if (id != -1) {
fileName = c.getString(id);
}
}
}
}
< /code>

фрагмент кода заимствован из  intent file Manager < /em> .org/en/node/829 

Цель if-else 
-обратная совместимость. Интересно, лучший ли это способ получить имя файла, так как я обнаружил, что другие управляющие файлами возвращают все виды вещей.

Например, документы Того < /em> вернуть что -то вроде следующего:
< /p>

content://com.dataviz.dxtg.documentprovider/document/file%3A%2F%2F%2Fsdcard%2Fdropbox%2FTransfer%2Fconsent.pdf
< /code>

, на котором getContentResolver (). Query () < /code> возвращает null < /code>.

Чтобы сделать вещи более интересными, неназванный файловый менеджер (я получил этот URI от журнала клиента) вернул что -то вроде: < /p>

/./sdcard/downloads/.bin
< /code>

Есть ли предпочтительный способ извлечения имени файла из URI или нужно прибегнуть к картину строки? < /strong>

Подробнее здесь: https://stackoverflow.com/questions/556 ... et-content
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»