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 是可以充当权限对话框父级的窗口的句柄。 如果 fModal 为 TRUE,则必须为 NULL。
[in] pSensors
对于Windows 8,不使用此值。
对于 Windows 7,pSensors 是指向 ISensorCollection 接口的指针,该接口包含为其请求权限的传感器列表。
[in] fModal
对于Windows 8,不使用此值。 有关形式的控制,请参阅 hParent 。
对于 Windows 7,fModal 是指定对话框模式的 BOOL 。 如果 hParent 为非 null,则必须为 FALSE。
返回值
下表描述了同步结果的返回代码。
返回代码 | 说明 |
---|---|
|
用户已启用传感器。 |
|
用户选择禁用传感器。 |
|
用户取消了对话框或拒绝了显示对话框的权限提升。 |
下表描述了异步结果的返回代码。
返回代码 | 说明 |
---|---|
|
显示传感器集合中的所有传感器供用户启用。 方法成功。 |
|
显示传感器集合中的某些传感器供用户启用。 某些传感器可能已从集合中删除;例如,因为用户之前已选择禁用它们。 方法成功。 |
|
自变量无效。 |
|
指针为 null。 |
|
传感器集合中的所有传感器以前都已被用户禁用。 未显示对话框。 |
注解
从 Windows 应用程序的用户界面 (UI) 线程进行同步调用可能会阻止 UI 线程并使应用程序的响应降低。 若要防止这种情况,请勿在 fModal 设置为 TRUE 的情况下从 UI 线程调用此方法。
如果在保护模式下运行的应用程序或插件(例如浏览器帮助程序对象 (Internet Explorer 的 BHO) ,当 Internet Explorer 在受保护模式下运行时,调用 RequestPermissions,并且用户在对话框中选择“ 不启用此位置传感器 ”选项,如果同一用户再次调用 RequestPermissions,Windows 将再次显示对话框。 在受保护模式下运行的应用程序可以选择避免在启动时调用 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 |
标头 | sensorsapi.h |
Library | Sensorsapi.lib |
DLL | Sensorsapi.dll |