Я пытаюсь написать код для загрузки файла с 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.