Метод 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.
Возвращаемое значение
В следующей таблице описаны коды возврата для синхронных результатов.
Код возврата | Описание |
---|---|
|
Пользователь включил датчики. |
|
Пользователь решил отключить датчики. |
|
Пользователь отменил диалоговое окно или отказался от повышения прав на его отображение. |
В следующей таблице описаны коды возврата для асинхронных результатов.
Код возврата | Описание |
---|---|
|
Все датчики в коллекции датчиков были отображены для включения пользователем. Метод выполнен успешно. |
|
Некоторые датчики в коллекции датчиков были отображены для включения пользователем. Некоторые датчики могли быть удалены из коллекции; например, потому, что пользователь ранее отключил их. Метод выполнен успешно. |
|
Аргумент является недопустимым. |
|
Указатель имеет значение NULL. |
|
Все датчики в коллекции датчиков были ранее отключены пользователем. Диалоговое окно не отображается. |
Комментарии
Выполнение синхронного вызова из потока пользовательского интерфейса приложения 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 |