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

Всех приветствую. Подскажите пожалуйста,как получить путь к pdf файлу из

uri без специальных разрешений,кроме read_external_storage и read_media_images? Для картинок всё прекрасно работает,включая android 13,но если тип media uri document (строка 126),я не знаю,как быть. Вы можете посмотреть мой код на https://pastebin.com/bxN0Hvqr. Заранее благодарю всех за помощь.

44 ответов

83 просмотра

опять старая песня не существует никакого «пути к файлу»

Саша-Козловский Автор вопроса

Вопрос,как быть с pdf документами (проблема в строке 126).

Саша-Козловский Автор вопроса
Mike (деньги не клянчу)
android.provider.MediaStore#getDocumentUri, не?

java.io.FileNotFoundException: Volume not found for content://com.android.providers.media.documents/document/document%3A1000007596

Саша Козловский
java.io.FileNotFoundException: Volume not found fo...

Вы этот путь пытаетесь читать как обычный файл?

Саша-Козловский Автор вопроса
Leonid B.
Вы этот путь пытаетесь читать как обычный файл?

Ну вообще да,я обращаюсь к нему как файлу,но вот в строке 126 возникла проблема,т.е там надо как-то по-другому обрабатывать эти uri.

Саша-Козловский Автор вопроса

Так путь-то я не получу...

Саша Козловский
Так путь-то я не получу...

Ну сказали же, что именно путь к файлу есть не везде, не всегда и не у всего.

Саша-Козловский Автор вопроса
Leonid B.
Ну сказали же, что именно путь к файлу есть не вез...

Хорошо. Тогда как гарантированно получить имя файла? Меня удивляет ещё и то,что во всех примерах,где я видел,нету проверки на тип "document". Неужели ни у кого из здесь присутствующих не было задачи получить путь к документу через uri?

Саша Козловский
Хорошо. Тогда как гарантированно получить имя файл...

да нет никакого файла, не существует его, не обязан

Саша Козловский
Хорошо. Тогда как гарантированно получить имя файл...

имя файла так же можно вытянуть по юри с помощью курсора, но его может не быть. Этот параметр наллейбл

Саша-Козловский Автор вопроса
Саша Козловский
Но ведь в некоторых случаях существует.

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

Саша-Козловский Автор вопроса

Вопрос как гарантированно получить имя файла,которого типа нет.

Саша-Козловский Автор вопроса
Leonid B.
Никак

Вот именно,а мне на сервер желательно передавать имя файла.

Саша Козловский
Вот именно,а мне на сервер желательно передавать и...

нет гарантии такой. Ну что поделать. нет и нет вот..

Саша-Козловский Автор вопроса
Leonid B.
Сгенерировать любое своё и отправить

Ну вот только так и придётся. На всякий случай ещё в другом чате/чатах поспрашиваю,вдруг каой-то способ есть,учитывая,что имя мне по-любому нужно,чтобы узнать расширение и отправить его на сервер через mediaType в okhttp.

Саша Козловский
Ну вот только так и придётся. На всякий случай ещё...

Значит создавай темп файл перед отправкой, его и сконвертить проще и имя будет 100%

Саша-Козловский Автор вопроса
Андрей
Значит создавай темп файл перед отправкой, его и с...

Об этом я тоже думал,т.е создать файл в кеш директории,только как его правильно удалить,чтобы мусор не копился,или с этим не должно быть проблем?

Саша Козловский
Об этом я тоже думал,т.е создать файл в кеш директ...

Там можно создавать файл и задать ему удаление при выходе

Там прям есть создание файла createTemp что-то там, оно сразу создаст его в кеш

Саша-Козловский Автор вопроса
Саша Козловский
А,посмотрю. Это в context?

Честно не помню, погуглить надо, помню что из коробки есть решение временных файлов

Саша Козловский
Хорошо. Тогда как гарантированно получить имя файл...

Задача была, решал через медиа курсор, гарантий не дает метод. "на каком то устройстве молча не будет работать". непрозрачные ури типа content: надо открывать через контент резольвер, там есть гарантия

Саша-Козловский Автор вопроса
Сергей П.
Задача была, решал через медиа курсор, гарантий не...

А имя с подобными uri,т.е начинающимися с content гарантированно через курсор получить можно и нет ли у Вас решения для pdf,я про медиа курсор? Интересно,на каких устройствах получение пути через медиа не работает?

Саша Козловский
А имя с подобными uri,т.е начинающимися с content ...

Да тупо прямо на эмуляторе вот не работало.

Саша-Козловский Автор вопроса
Сергей П.
Да тупо прямо на эмуляторе вот не работало.

Ну на эмуляторе всё время есть какие-то сюрпризы.

Саша-Козловский Автор вопроса
Саша Козловский
Ну на эмуляторе всё время есть какие-то сюрпризы.

Хотя на реальных устройствах они тоже могут быть.

Саша-Козловский Автор вопроса

Огромное спасибо.

Жесть динозавра откопали

Саша Козловский
Огромное спасибо.

Нагуглил его на СО по словам типа android content uri get real path Но единственный повод вычислять реальный путь - это если сторонняя либа хочет File и не умеет uri читать

Андрей
Жесть динозавра откопали

кремируйте её быстрее

Саша Козловский
Хорошо. Тогда как гарантированно получить имя файл...

Господи, да открой память телефона в интенте и верни ссылку на файл в результате и потом вальстримь еë в инпутстрим(урьль)

Саша Козловский
Хорошо. Тогда как гарантированно получить имя файл...

И не надобно никаких разрешений, только куери в манифест закинуть

Саша-Козловский Автор вопроса

Как её открыть?

Саша Козловский
Как её открыть?

private fun openFile() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" addCategory(Intent.CATEGORY_OPENABLE) } if (intent.resolveActivity(getPackageManager()) != null) { startForResult.launch(intent) } else { Toast.makeText(this@MainActivity, "There is no app that support this action", Toast.LENGTH_SHORT).show() } }

Капитан Шимпанзе
private fun openFile() { val intent = Inte...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Какой дос блять?
007
9
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта