как получить расширение из Uri?

Пытаюсь получить расширение из Uri скачаного файла на android 6 но получаю только пустой String или null

Как получить расширение из Uri ? пробовал на android 10 таких проблем нет.

Файл загружен с помощью Chrome и при передаче он показывает на своем экране имя и расширение и кнопку Открыть. Но видимо моему приложению эту информацию он не дает? Или я не правильно получаю?

private static String getFileMimeType(Context context, Uri uri){
    String urisceme = uri.getScheme();
    if(urisceme.equalsIgnoreCase(ContentResolver.SCHEME_CONTENT)){
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        String getType = context.getContentResolver().getType(uri);
        String ext = mime.getExtensionFromMimeType(getType);

        boolean existExt = mime.hasMimeType(getType);
        if(existExt)
            return ext;
        else{
            String extF = MimeTypeMap.getFileExtensionFromUrl(uri.toString());
            return extF;
        }
    }else{
        return MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.toString())).toString());
    }
}

скриншот значений


Ответы (1 шт):

Автор решения: Yura Ivanov

Попробуйте так:

if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
    try (Cursor returnCursor =
                         context.getContentResolver().query(uri, null, null, null, null)) {
        if (returnCursor != null && returnCursor.moveToFirst()) {
            int mimeIndex = returnCursor.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE);
            return returnCursor.getString(mimeIndex);
        }
    } catch (Exception ignore) {}
    return null;
}
→ Ссылка