管理用户权限

重要

请改用 UWP 传感器 API

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

传感器 API 提供了一种可用于提示用户使用传感器或传感器集合的权限的方法。

由于传感器可以显示敏感信息,Windows 要求用户在程序访问任何数据之前启用传感器。

如果想要使用当前 SensorState SENSOR_STATE_ACCESS_DENIED的传感器,可能需要请求权限。

若要请求权限,请调用 ISensorManager::RequestPermissions 方法。 调用此方法时,Windows 将打开 “启用传感器 ”对话框,提示用户启用所请求的传感器。 此对话框向用户提供所请求的传感器的名称。 用户可以选择以下选项之一:

  • 启用这些传感器
  • 不要启用这些传感器
  • 打开“控制面板”以获取更多选项

如果用户选择“不启用这些传感器”,即使程序调用 RequestPermissions,Windows 也不会为这些特定传感器再次显示“启用传感器”对话框。 如果用户选择任何其他选项,Windows 将允许在请求时显示对话框。 如果对 RequestPermissions 的 调用包含用户以前选择禁用的某些传感器,传感器 API 将从用户看到的传感器列表中删除这些传感器。

RequestPermissions 方法采用一个布尔参数,该参数确定“启用传感器”对话框是显示为模态窗口还是非模态窗口。 此设置还会影响对话框返回代码的行为是同步还是异步。

当对话框是模态时,它在应用程序窗口中具有独占焦点,直到用户选择一个选项。调用RequestPermissions 返回的 HRESULT 代码指示用户的选择。 在无模式状态下,对话框没有取得独占的焦点,对 RequestPermissions 的调用会立即返回。 在这种情况下,返回代码指示方法是否成功,但不能用于确定用户的选择。 然后,你可以通过处理OnStateChanged事件,并检查每个传感器是否处于 SENSOR_STATE_READY 状态来确定哪些传感器已启用。

有关返回代码的详细信息,请参阅 RequestPermissions 参考页。

最佳实践:避免对 RequestPermissions 进行多次无模式调用

RequestPermissions 的重复无模式调用将显示“ 启用这些传感器 ”对话框的多个实例,并且可能会用对话框淹没屏幕,从而导致用户体验不佳。 如果你认为在首次调用 RequestPermissions 后,可能会安装其他位置传感器,需要再次调用 RequestPermissions,则应以模式方式调用 RequestPermissions,或等待安装完所有位置传感器后以无模式方式调用。

传感器和位置平台中的隐私和安全性

请求用户权限