Управление разрешениями пользователей
API датчика предоставляет метод, который можно использовать, чтобы запрашивать у пользователя разрешения на использование датчика или коллекции датчиков.
Так как датчики могут раскрывать конфиденциальную информацию, Windows требует, чтобы пользователи включили датчики, прежде чем ваша программа сможет получить доступ к каким-либо данным.
Вы можете запросить разрешение, если вы хотите использовать датчики, для которых текущий SensorState SENSOR_STATE_ACCESS_DENIED.
Чтобы запросить разрешения, вызовите метод ISensorManager::RequestPermissions . При вызове этого метода Windows открывает диалоговое окно Включение датчиков , чтобы предложить пользователю включить запрошенные датчики. Это диалоговое окно предоставляет пользователю имена запрошенных датчиков. Пользователь может выбрать один из следующих вариантов:
- Включите эти датчики.
- Не включайте эти датчики.
- Откройте панель управления для получения дополнительных параметров.
Если пользователь выберет Параметр Не включать эти датчики, Windows не будет снова отображать диалоговое окно Включить датчики для этих датчиков, даже если программа вызывает RequestPermissions. Если пользователь выберет любой другой вариант, Windows разрешит отображение диалогового окна по запросу. Если ваш вызов RequestPermissions содержит некоторые датчики, которые пользователь ранее выбрал для отключения, API датчика удалит эти датчики из списка датчиков, которые видит пользователь.
Модальное или безрежимное поведение
Метод RequestPermissions принимает логический аргумент, который определяет, отображается ли диалоговое окно Включение датчиков как модальное или безрежимное окно. Этот параметр также влияет на то, является ли поведение кода возврата диалогового окна синхронным или асинхронным.
При модальном режиме диалоговое окно будет монопольно фокусироваться между окнами приложения, пока пользователь не выберет параметр, а HRESULT возвращает код из вызова RequestPermissions . В режиме без режима диалоговое окно не имеет монопольного фокуса, и вызов RequestPermissions возвращается немедленно. В этом случае код возврата указывает, успешно ли выполнен метод, но не может использоваться для определения выбора пользователя. Затем можно определить, какие датчики были включены, обрабатывая событие OnStateChanged и проверяя каждый датчик на наличие SENSOR_STATE_READY.
Дополнительные сведения о кодах возврата см. на странице справочника RequestPermissions .
Рекомендация. Избегайте нескольких безмодежимных вызовов requestPermissions
Повторяющиеся немодерируемые вызовы RequestPermissions отображают несколько экземпляров диалогового окна Включить эти датчики и могут привести к переполнению экрана диалоговых окон, что приведет к ухудшению взаимодействия с пользователем. Если вы считаете, что после первого вызова RequestPermissions могут быть установлены другие датчики расположения, требующие другого вызова RequestPermissions, следует вызвать RequestPermissions модально или дождаться установки всех датчиков расположения, чтобы выполнить немодальный вызов.
Связанные темы