管理用户权限

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

由于传感器可能会显示敏感信息,因此 Windows 要求用户启用传感器,然后程序才能访问任何数据。

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

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

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

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

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

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

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

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

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

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

请求用户权限