ISensorManager::RequestPermissions 方法(sensorsapi.h)

重要

请改用 UWP 传感器 API

基于 COM 的传感器 API 已弃用,不应在新应用程序中使用。 没有计划其他功能或增强功能,并且支持将受到限制。

打开系统对话框,请求用户访问传感器数据的权限。

Syntax

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

参数

[in] hParent

对于 Windows 8,如果提供 hParent 值,则对话框将模式化到父窗口。 如果 hParentNULL,则对话框将不为模式。 对话始终是同步的。

对于 Windows 7,HWND 是充当权限对话框的父窗口的句柄。 如果 fModalTRUE,则必须为 NULL

[in] pSensors

对于 Windows 8,不使用此值。

对于 Windows 7,pSensors 是指向 ISensorCollection 接口的指针,其中包含请求其权限的传感器列表。

[in] fModal

对于 Windows 8,不使用此值。 请参阅 hParent 来控制形式。

对于 Windows 7,fModal 是指定对话框模式的 BOOL 。 如果 hParent 为非 null,则必须为 FALSE

价值 Meaning
如果 hParentNULL,则对话框为模式,因此在用户响应之前在 Windows 中具有独占焦点。 调用是同步的。 返回代码指示用户选择。 请参阅返回值。

如果 hParent 为非 null,则调用是异步的,并且调用线程不会等待对话框关闭。 返回代码指示调用是否成功。 请参阅返回值。

对话框是无模式的。 调用是异步的,调用线程不会等待对话框关闭。 返回代码指示调用是否成功。 请参阅返回值。

忽略 hParent 参数。

返回值

下表描述了同步结果的返回代码。

返回代码 Description
S_OK
用户启用了传感器。
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
用户选择禁用传感器。
HRESULT_FROM_WIN32(ERROR_CANCELLED)
用户取消了对话框或拒绝权限提升以显示对话框。
 

下表描述了异步结果的返回代码。

返回代码 Description
S_OK
传感器集合中的所有传感器都显示供用户启用。 方法成功。
S_FALSE
为用户启用传感器集合中的某些传感器显示。 某些传感器可能已从集合中删除;例如,因为用户以前已选择将其禁用。 方法成功。
E_INVALIDARG
参数无效。
E_POINTER
指针为 null。
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
传感器集合中的所有传感器以前都已被用户禁用。 未显示对话框。

注解

从 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

另请参阅

ISensorManager

管理用户权限

请求用户权限