Запрос разрешений на Wear OS

ключевые слова: износ, разрешения, коллекция_guideslandingwear image_path: images/training/wear/multiple_permissions.png

Запрос разрешений в Wear OS аналогичен запросу разрешений в мобильных приложениях, но с несколькими дополнительными вариантами использования. В этом документе предполагается, что вы понимаете, как работают разрешения Android. Если нет, ознакомьтесь с тем, как работают разрешения на Android .

Как и в мобильном приложении, пользователь должен предоставить приложению Wear разрешения на доступ к определенным функциям. Обеспечьте значимую функциональность в своих приложениях Wear, не запрашивая никаких разрешений.

Сценарии разрешений

Существует несколько сценариев, с которыми вы можете столкнуться при запросе опасных разрешений в Wear OS:

  • Приложение Wear запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение Wear запрашивает разрешения для приложения, работающего на телефоне.

  • Приложение телефона запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение для телефона запрашивает несколько разрешений, которые можно использовать только при подключенном носимом устройстве.

Чтобы увидеть все эти сценарии в работающем приложении, просмотрите образец упражненияSampleCompose на GitHub.

В следующих разделах описывается каждый из этих сценариев. Более подробную информацию о запросе разрешений см. в разделе Шаблоны запросов разрешений .

Приложение Wear запрашивает разрешение на носимое устройство

Когда приложение Wear запрашивает разрешение для приложения, работающего на носимом устройстве, система отображает диалоговое окно с запросом у пользователя этого разрешения. В вашем приложении запрашивайте разрешения только тогда, когда пользователю понятно, почему разрешения необходимы для выполнения определенной операции.

Ознакомьтесь с принципами разрешений, чтобы убедиться, что вы обеспечиваете наилучшие условия для своих пользователей, и не забудьте проверить метод shouldShowRequestPermissionRationale() и предоставить дополнительную информацию по мере необходимости.

Если приложению или циферблату требуется несколько разрешений одновременно, запросы на разрешения отображаются один за другим.

Несколько экранов разрешений, один за другим.
Рисунок 1. Экраны разрешений, появляющиеся последовательно.

Приложение Wear запрашивает разрешение телефона

Когда приложение Wear запрашивает разрешение телефона (например, носимое приложение хочет получить доступ к фотографиям или другим конфиденциальным данным в мобильной версии приложения), приложение Wear должно отправить пользователя на телефон, чтобы принять разрешение. Там приложение для телефона может предоставить пользователю дополнительную информацию, используя действие. Включите в действие две кнопки: одну для предоставления разрешения и одну для его отклонения.

Приложение Wear отправляет пользователя на телефон, чтобы предоставить разрешение.
Рисунок 2. Отправьте пользователя к телефону, чтобы предоставить разрешение.

Приложение для телефона запрашивает разрешение на носимое устройство

Если пользователь находится в приложении для телефона и приложению требуется разрешение на носимое устройство (например, для предварительной загрузки музыки в случае отключения телефона), приложение для телефона отправляет пользователя на носимое устройство для принятия разрешения. Носимая версия приложения использует метод requestPermissions() для вызова диалогового окна системных разрешений.

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

Приложение для телефона запрашивает несколько разрешений одновременно

Рис. 4. Диалоговое окно разрешений, в котором используется профиль сопутствующего устройства для запроса нескольких разрешений в одном запросе.

Партнерские приложения на Android 12 (уровень API 31) и выше могут использовать профили сопутствующих устройств при подключении к часам. Использование профиля упрощает процесс регистрации, объединяя предоставление набора разрешений для конкретного типа устройства в один шаг.

Пакетные разрешения предоставляются сопутствующему приложению после подключения устройства и действуют только до тех пор, пока устройство связано. Удаление приложения или удаление связи приводит к удалению разрешений. Дополнительные сведения см. в разделе AssociationRequest.Builder.setDeviceProfile() .

Шаблоны запросов разрешений

Существуют разные шаблоны запроса разрешений у пользователей. В порядке приоритета это:

  • Спрашивайте в контексте, когда разрешение очевидно необходимо для определенной функции, но не является необходимым для запуска приложения в целом.

  • Обучайте в контексте, когда причина запроса разрешения не очевидна и разрешение не требуется для запуска приложения в целом.

Эти шаблоны объяснены в следующих разделах.

Спросите в контексте

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

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

Приложение запрашивает разрешение, когда это очевидно необходимо.
Рисунок 5. Запрос разрешения в контексте.

Обучение в контексте

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

Используйте метод shouldShowRequestPermissionRationale() чтобы помочь вашему приложению решить, предоставлять ли дополнительную информацию. Дополнительные сведения см. в разделе Запрос разрешений для приложения . Кроме того, вы можете проверить, как пример приложения динамика на GitHub обрабатывает отображение информации .

Когда возникает необходимость в разрешении, приложение объясняет, почему оно необходимо.
Рисунок 6. Обучение в контексте.

Обработка отклонения

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

На рис. 7 показано использование значка замка, указывающего на то, что функция заблокирована, поскольку пользователь не предоставил разрешение на ее использование.

Когда пользователь отказывает в разрешении, рядом со связанной функцией отображается значок замка.
Рисунок 7. Значок замка, показывающий, что функция заблокирована из-за отказа в разрешении.

Когда диалоговое окно разрешения на носимое устройство, которому ранее было отказано, появляется во второй раз, оно включает параметр «Запретить, больше не показывать» . Если пользователь выберет этот вариант, то единственный способ предоставить ему это разрешение в будущем — это зайти в приложение «Настройки» носимого устройства.

Система предлагает прекратить запрашивать разрешение.
Рисунок 8. Пользователь может получить доступ к запросу разрешения, который ранее был дважды отклонен через «Настройки».

Узнайте больше о том, как справиться с отказом в разрешении .

Разрешения на услуги

Только действие может вызывать метод requestPermissions() , поэтому, если пользователь взаимодействует с вашим приложением с помощью службы (например, через циферблат), служба должна открыть действие, прежде чем запрашивать разрешение. В этом задании предоставьте дополнительную информацию о том, почему необходимо разрешение.

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

Настройки

Пользователь может изменить разрешения приложения Wear в настройках в любое время. Когда пользователь пытается сделать что-то, требующее разрешения, сначала вызовите метод checkSelfPermission() чтобы узнать, есть ли у приложения разрешение на выполнение этой операции.

Выполните эту проверку, даже если пользователь ранее предоставил разрешение, поскольку впоследствии пользователь мог его отозвать.

Пользователь может изменить разрешения через приложение «Настройки».
Рисунок 9. Пользователь может изменить разрешения с помощью приложения «Настройки».
{% дословно %} {% дословно %} {% дословно %} {% дословно %}