Как читать USB OTG на Android 11

Я хочу прочитать OTG USB на Android 11. Я могу перечислить такие файлы на Android 9:

val path = File("/storage")

Я могу перечислить файлы из внешней памяти в Android 11, но не в USB OTG:

val path = Environment.getExternalStorageDirectory()

Вопрос в том, почему я могу читать внешнюю память, но не OTG USB на Android 11? Я хочу иметь возможность читать USB OTG на Android 11.


person zzz    schedule 24.02.2021    source источник
comment
The question is why can I read the sd card /storage не является съемной картой micro sd. Более того, вы не можете читать /storage.   -  person blackapps    schedule 24.02.2021
comment
The question is why can I read the sd card Это внешняя память, которая находится в вашем устройстве. Это не связано со съемной картой micro SD.   -  person blackapps    schedule 24.02.2021
comment
Можете ли вы уже перечислить со съемной карты памяти micro sd? Ну если вставить..   -  person blackapps    schedule 24.02.2021
comment
why can I read external memory but not OTG USB on Android 11 ? Ну ты используешь путь к внешней памяти. Так что неудивительно.. Я думаю, вам стоит еще раз переформулировать свою проблему.   -  person blackapps    schedule 24.02.2021


Ответы (1)


Используйте getExternalFilesDirs(null) или ACTION_OPEN_DOCUMENT_TREE.

getExternalFilesDirs() вернет один, два или три элемента в зависимости от вставленной съемной карты micro sd и подключенного USB-накопителя otg.

Вы получаете путь к разделам, удаляя каталог Android и далее из полученных путей.

Обновлять. Раньше я не подключал USB-накопитель к моему трехдневному устройству Android 11.

К сожалению, это не было упомянуто в getExternalFilesDirs(), что имело место в более ранних версиях Android. Карта micro SD есть.

Но.. полный доступ через SAF с ACTION_OPEN_DOCUMENT_TREE. Можно даже выбрать корень диска.

person blackapps    schedule 24.02.2021
comment
Благодарю вас! Я использовал getExternalFilesDirs(null), он работал на устройстве Huawei, но по какой-то причине он не показывает путь к USB-накопителю OTG в устройстве Google Pixel, есть идеи, почему? у обоих одинаковая версия. - person zzz; 02.03.2021
comment
ACTION_OPEN_DOCUMENT_TREE - person blackapps; 02.03.2021
comment
Я использую ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION. Я не хочу использовать ACTION_OPEN_DOCUMENT_TREE, потому что хочу настроить свое приложение для управления файлами. - person zzz; 02.03.2021
comment
Что ж, если USB-накопитель otg доступен только через saf, вам придется использовать saf. Чтобы доступ ко всем файлам не открывал для вас внезапно этот диск. И если вы делаете приложение для управления файлами, вы также должны добавить проводник saf. - person blackapps; 02.03.2021
comment
Понятно! Благодарю вас! - person zzz; 02.03.2021
comment
@blackapps У вас есть идеи, почему библиотека Libaums может читать мой USB-накопитель OTG на Android 11? даже если он использует getExternalFilesDirs(null)? - person zzz; 04.03.2021
comment
Ну, на некоторых устройствах USB-накопитель otg упоминается в getExternalFilesDirs(). Ничего против этого. Вы можете легко проверить, так ли это. - person blackapps; 04.03.2021