
О чём тут пойдёт речь:
Почему я решил этим заняться
Как я разрабатывал приложение (в общих чертах)
Обманчивые гайдлайны Google и о том, как я пытался победить банальные (на первый взгляд) проблемы
Надеюсь, что вам будет интересно. Поехали!
Вступление
Однажды настал момент, когда мне было необходимо поработать с файлами на своих часиках. Я просто хотел создать папку, накидать туда фоточек со шпорами... классика, не правда ли?
Открыв Google Play я ожидал увидеть обилие разнообразного программного обеспечения, которое позволит мне это сделать. Каково же было моё удивление, когда я увидел всего два приложения для управления файлами на часах...


Ну ладно, может быть они позволят мне хотя бы создать папочку в памяти устройства?
Выдав приложениям все необходимые разрешения я попытался создать папку в памяти устройства. Что может пойти не так?

Почему это могло произойти? Разве я не выдал разрешения? Да нет, разрешения выданы.

Подопытный №2 также не помог мне ровно по той же причине. Все разрешения даны, но создать папку не выходит.
А если попробовать скопировать файл из папки Download в домашнюю папку? Итог был ожидаемый:

А что если скопировать файл не в домашнюю папку в... допустим в DCIM?

Мы только что скопировали файл из папки Download в папку DCIM. Почему это сработало?
Кажется я догадываюсь в чём именно дело...
На моём устройстве была установлена Wear OS 4 с Android 13. А что если попробовать создать эмулятор с версией ниже?
Итак... создаём эмулятор: Wear OS 3, Android 11.
Выдаём подопытным все возможные разрешения и пытаемся создать папку в памяти устройства:

И да, оба подопытных работают так, как должны и позволяют создавать, удалять, перемещать файлы куда угодно!
В чём же дело?
Кажется, разрешения для доступа к фалам просто сломаны Wear OS 4.
Это issue висит с 2023 года. Новостей нет, продвижений тоже. Мы буквально не можем выдать разрешение для доступа ко всем файлам на Wear OS 4. Какая досада.
Конечно мы можем сделать так:
adb shell appops set --uid com.example.app MANAGE_EXTERNAL_STORAGE allow
И да, после этого наши подопытные работают как надо. После выдачи необходимого разрешения через adb shell мы сможем создавать папки где хотим и перемещать файлы куда хотим.
На этом моменте можно было остановиться, но я, попользовавшись этими приложениями, почувствовал некоторое отвращение к их дизайну... Посмотрите сами, вам было бы приятно пользоваться этим?

Не нравится - готовь себе сам!
Почему бы не попробовать сделать так, как нравится мне? Я и сам хотел поковыряться над этой проблемой и понять, что к чему.
Потратив пару часов у меня получилось что-то такое:

Конечно здесь я также выдал разрешение на доступ к файлам через adb shell... Но может быть у меня получится решить проблему с разрешениями?
Разрешения, разрешения, разрешения...
Воспользовавшись официальными гайдлайнами Google я попытался запросить разрешение на доступ к файлам.
Конечно же у меня ничего не вышло... Или вышло?
Понизив compileSdk до уровня 29 я обнаружил, что разрешения всё-таки выдаются. Забавно, учитывая то, что Google Play не пропустит моё приложение с таким уровнем compileSdk...
Что остаётся, так это повысить compileSdk до приемлемого значения и жалостно попросить пользователя выдать разрешение через adb shell.
Увы, проблема не решается так просто. Пока в Google не займутся этим - другого способа получения разрешения на доступ к файлам мы не увидим.
Подведём итоги
Поигрались с различными файловыми менеджерами на разных версиях Wear OS, а также над разрешениями для доступа к файлам.
Убедились в том, что разрешения для доступа к файлом в Wear OS 4 работают не так, как хотелось бы.
Написали простенький и красивый (по моему субъективному мнению) файловый менеджер для Wear OS.
Если вам интересно следить за судьбой моего небольшого проекта
WearFiles - доступен в Google Play, а исходный код есть на GitHub.
Всем удачи!