Поделиться через


Метод ISensorManager::RequestPermissions (sensorsapi.h)

Открывает системное диалоговое окно для запроса разрешения пользователя на доступ к данным датчика.

Синтаксис

HRESULT RequestPermissions(
  [in] HWND              hParent,
  [in] ISensorCollection *pSensors,
  [in] BOOL              fModal
);

Параметры

[in] hParent

Для Windows 8, если hParent указано значение, диалоговое окно будет модальным для родительского окна. Если параметр hParent имеет значение NULL, диалоговое окно не будет модальным. Диалог всегда синхронный.

В Windows 7 HWND является дескриптором для окна, которое может выступать в качестве родительского для диалогового окна разрешений. Значение должно иметь значение NULL , если fModal имеет значение TRUE.

[in] pSensors

Для Windows 8 это значение не используется.

Для Windows 7 pSensors — это указатель на интерфейс ISensorCollection , содержащий список датчиков, для которых запрашивается разрешение.

[in] fModal

Для Windows 8 это значение не используется. Управление модальности см. в разделе hParent .

Для Windows 7 fModal является логическим значением, указывающим режим диалогового окна. Если значение hParent не равно NULL, должно иметь значение FALSE.

Значение Значение
TRUE
Если параметр hParent имеет значение NULL, диалоговое окно является модальным и, следовательно, имеет монопольный фокус в Windows до тех пор, пока пользователь не ответит. Вызов является синхронным. Код возврата указывает выбор пользователя. См. раздел Возвращаемое значение.

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

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

Параметр hParent игнорируется.

Возвращаемое значение

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

Код возврата Описание
S_OK
Пользователь включил датчики.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Пользователь решил отключить датчики.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
Пользователь отменил диалоговое окно или отказался от повышения прав на его отображение.
 

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

Код возврата Описание
S_OK
Все датчики в коллекции датчиков были отображены для включения пользователем. Метод выполнен успешно.
S_FALSE
Некоторые датчики в коллекции датчиков были отображены для включения пользователем. Некоторые датчики могли быть удалены из коллекции; например, потому, что пользователь ранее отключил их. Метод выполнен успешно.
E_INVALIDARG
Аргумент является недопустимым.
E_POINTER
Указатель имеет значение NULL.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Все датчики в коллекции датчиков были ранее отключены пользователем. Диалоговое окно не отображается.

Комментарии

Выполнение синхронного вызова из потока пользовательского интерфейса приложения Windows может заблокировать поток пользовательского интерфейса и сделать приложение менее быстрым. Чтобы избежать этого, не вызывайте этот метод из потока пользовательского интерфейса с параметром fModal , равным TRUE.

Примечание  

Если приложение или подключаемый модуль, запущенные в защищенном режиме, например вспомогательный объект браузера (BHO) для Интернет-Обозреватель, когда интернет-Обозреватель работает в защищенном режиме, вызывает RequestPermissions и пользователь выбирает параметр Не включать этот датчик расположения в диалоговом окне, Windows снова отобразит диалоговое окно, если requestPermissions вызывается снова тем же пользователем. Приложения, которые выполняются в защищенном режиме, могут избежать вызова RequestPermissions при запуске, чтобы пользователь не подвергался воздействию потенциально нежелательных диалоговых окон при каждом запуске приложения.

 

Примеры

В следующем примере кода запрашиваются разрешения для всех датчиков, полученных из диспетчера датчиков, по типу, с помощью асинхронного вызова метода. Платформа предложит пользователю включить только датчики, которые еще не включены. Чтобы определить, включил ли пользователь какие-либо датчики в этом случае, необходимо обработать событие ISensorEvents::OnStateChanged . Дополнительные примеры, демонстрирующие запрос разрешений, см. в разделе Запрос разрешений пользователя.

// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);

if(SUCCEEDED(hr))
{
    // Request permissions for all sensors
    // in the collection.
    hr = pSensorManager->RequestPermissions(0, pSensorColl, FALSE);
}


Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Ни одна версия не поддерживается
Целевая платформа Windows
Header sensorsapi.h
Библиотека Sensorsapi.lib
DLL Sensorsapi.dll

См. также раздел

ISensorManager

Управление разрешениями пользователей

Запрос разрешений пользователя