Как загрузить файл из папки загрузок в Android Oreo и выше? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь написать код для загрузки файла с Android Oreo и Above.Сначала я пытаюсь получить URI файла.

intent_upload.action = Intent.ACTION_GET_CONTENT
return Intent.createChooser(intent_upload, pickerTitle)

Но когда я выбираю файл из папки загрузок, он возвращает ноль filepath из следующего кода.Он отлично работает для устройств ниже Android Oreo, но я не могу найти решение для Android O и выше.

Пожалуйста, помогите

val id = DocumentsContract.getDocumentId(uri)
val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), java.lang.Long.valueOf(id));
return getDataColumn(context, contentUri, null, null)

Код для getDataColumn следующий

fun getDataColumn(context: Context, uri: Uri?, selection: String?,
                          selectionArgs: Array<String>?): String? {

        var cursor: Cursor? = null
        val column = "_data"
        val projection = arrayOf(column)

        try {
            cursor = context.contentResolver.query(uri!!, projection, selection, selectionArgs, null)
            val temp = context
            if (cursor != null && cursor.moveToFirst()) {
                val index = cursor.getColumnIndexOrThrow(column)
                return cursor.getString(index)
            }
        }catch (e:Exception){

        } finally {
            cursor?.close()
        }
        return null
    }

Это происходит для API 26 и выше.

Myмотив состоит в том, чтобы загрузить файл PDF из папки загрузок в Android.

1 Ответ

0 голосов
/ 09 апреля 2019

Я знаю, что это просрочено.Я также столкнулся с этой проблемой, и я смог найти решение из этой сути. FileUtils.java .Просто используйте этот класс утилит в вашем проекте

Просто оставьте это здесь для людей, которые столкнутся с этой проблемой в будущем.Потратил пару часов, работая над этим.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Uri uri = data.getData();
    File originalFile = new File(FileUtils.getRealPath(this,uri));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...