169 похожих чатов

Всех приветствую. Пытаюсь получить путь к файлу,открытому через action_open_document. Если

uri содержит com.android.providers.media.documents,пытаюсь получить данные из курсора,но в android 12 значение столбца _data null. Подскажите пожалуйста,как правильно получить путь к файлу,не запрашивая дополнительных разрешений? Заранее благодарю всех за помощь.


fun getDataColumn(
context: Context, uri: Uri, selection: String?,
selectionArgs: Array<String>?, columnName: String?
): String? {
var cursor: Cursor? = null;
val column: String
if (columnName == null)
column = "_data"
else
column = columnName;
val projection: Array<String> = Array<String>(1) {
column
};
try {
cursor = context.getContentResolver().query(
uri, projection, selection, selectionArgs,
null
);
if (cursor == null) return uri.path
if (cursor.moveToFirst()) {
val column_index = cursor.getColumnIndexOrThrow(column);
if (column.equals("_data"))
return cursor.getString(column_index)
else
return uri.toString() + "/" + cursor.getString(column_index)
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}

...

val docId = DocumentsContract.getDocumentId(uri)
val split = docId.split(":".toRegex()).toTypedArray()
val type = split.get(0)
var contentUri: Uri? = null
if (("image" == type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
} else if (("video" == type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
} else if (("audio" == type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
}
val selection = "_id=?"
val selectionArgs: Array<String> = arrayOf(split.get(1))
return getDataColumn(context, contentUri!!, selection, selectionArgs)

4 ответов

27 просмотров

Релатив путь

Саша-Козловский Автор вопроса
Di7aK
Релатив путь

А,относительный путь плюс display_name?

Саша-Козловский Автор вопроса
Саша Козловский
А,относительный путь плюс display_name?

А прочитать файл по этому пути я смогу?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта