打开系统对话框,请求用户访问传感器数据的权限。
Syntax
HRESULT RequestPermissions(
[in] HWND hParent,
[in] ISensorCollection *pSensors,
[in] BOOL fModal
);
参数
[in] hParent
对于 Windows 8,如果提供 hParent 值,则对话框将模式化到父窗口。 如果 hParent 为 NULL,则对话框将不为模式。 对话始终是同步的。
对于 Windows 7,HWND 是充当权限对话框的父窗口的句柄。 如果 fModal 为 TRUE,则必须为 NULL。
[in] pSensors
对于 Windows 8,不使用此值。
对于 Windows 7,pSensors 是指向 ISensorCollection 接口的指针,其中包含请求其权限的传感器列表。
[in] fModal
对于 Windows 8,不使用此值。 请参阅 hParent 来控制形式。
对于 Windows 7,fModal 是指定对话框模式的 BOOL 。 如果 hParent 为非 null,则必须为 FALSE。
返回值
下表描述了同步结果的返回代码。
| 返回代码 | Description |
|---|---|
|
用户启用了传感器。 |
|
用户选择禁用传感器。 |
|
用户取消了对话框或拒绝权限提升以显示对话框。 |
下表描述了异步结果的返回代码。
| 返回代码 | Description |
|---|---|
|
传感器集合中的所有传感器都显示供用户启用。 方法成功。 |
|
为用户启用传感器集合中的某些传感器显示。 某些传感器可能已从集合中删除;例如,因为用户以前已选择将其禁用。 方法成功。 |
|
参数无效。 |
|
指针为 null。 |
|
传感器集合中的所有传感器以前都已被用户禁用。 未显示对话框。 |
注解
从 Windows 应用程序的用户界面(UI)线程进行同步调用可以阻止 UI 线程,并使应用程序响应更少。 若要防止出现这种情况,请不要从 将 fModal 设置为 TRUE 的 UI 线程调用此方法。
如果 Internet Explorer 在受保护模式下运行的应用程序或插件(例如 Internet Explorer 浏览器帮助程序对象(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);
}
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 7 [仅限桌面应用] |
| 支持的最低服务器 | 无受支持的版本 |
| 目标平台 | Windows操作系统 |
| Header | sensorsapi.h |
| Library | Sensorsapi.lib |
| DLL | Sensorsapi.dll |