Как стать автором
Обновить

Как я писал проводник для Wear OS и что из этого вышло

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.3K

О чём тут пойдёт речь:

  • Почему я решил этим заняться

  • Как я разрабатывал приложение (в общих чертах)

  • Обманчивые гайдлайны Google и о том, как я пытался победить банальные (на первый взгляд) проблемы

Надеюсь, что вам будет интересно. Поехали!

Вступление

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

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

Подопытный №1
Подопытный №1
Подопытный №1
Подопытный №2

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

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

Упс
Упс

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

Подопытный №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.

Всем удачи!

Теги:
Хабы:
+9
Комментарии2

Публикации

Работа

Ближайшие события