Получение расширения файла из Dropbox или драйвера после onActivityResult () - PullRequest
0 голосов
/ 03 ноября 2018

Я использую этот код для загрузки файла:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        final String path = getPath(data.getData());
        final String fileExt = path.substring(path.lastIndexOf(".") + 1);
    }
}

Этот код отлично работает для выбора файла из SDCard. Но если я выбираю файл из Drive или Dropbox в строке 4, я получаю сообщение об ошибке.

Кто-нибудь знает, почему так происходит.

1 Ответ

0 голосов
/ 03 ноября 2018

Этот код отлично работает для выбора файла с SDCard.

Не обязательно. В конце концов, файлы не должны иметь расширения. README является допустимым именем файла и не имеет расширения файла.

Но если я выберу файл на диске или Dropbox в строке 4, я получу ошибку

Конечно. Для Uri нет необходимости иметь расширение файла. Например, /10319790/poluchenie-rasshireniya-faila-iz-dropbox-ili-draivera-posle-onactivityresult является Uri и не имеет расширения файла.

Если data.getData().getScheme() вернет file, вы можете попробовать свой алгоритм, но он не будет работать README.

Если data.getData().getScheme() возвращает content, вы можете использовать getContentResolver().getType(data.getData()), чтобы получить тип MIME для содержимого. Затем вы можете попытаться использовать MimeTypeMap для определения расширения файла, хотя MimeTypeMap не обрабатывает все возможные типы MIME.

В целом, вам необходимо пересмотреть свои планы, чтобы вам не нужны расширения файлов.

...