共用方式為


管理用戶權力

感測器 API 提供一種方法,可用來提示使用者取得使用感測器或感測器集合的許可權。

因為感測器可以顯示敏感性資訊,Windows 要求使用者在程式存取任何數據之前先啟用感測器。

當您想使用當前 SensorState 為SENSOR_STATE_ACCESS_DENIED的感測器時,您可能需要申請使用許可。

若要要求許可權,請呼叫 ISensorManager::RequestPermissions 方法。 當您呼叫此方法時,Windows 會開啟 [啟用感測器] 對話框,提示使用者啟用您要求的感測器。 此對話框會為使用者提供您所要求感測器的名稱。 使用者可以選擇下列其中一個選項:

  • 啟用這些感測器。
  • 請勿在啟用這些感測器。
  • 開啟 [控制面板] 以取得更多選項。

如果使用者選擇 不要啟用這些感測器,Windows 將不會針對這些特定感測器 再次顯示 [啟用感測器] 對話框,即使您的程式呼叫 RequestPermissions也一樣。 如果用戶選擇任何其他選項,Windows 將會允許在要求時顯示對話方塊。 如果您呼叫 RequestPermissions 包含使用者先前選擇保持停用的某些感測器,感測器 API 將會從使用者看到的感測器清單中移除這些感測器。

RequestPermissions 方法會採用 布爾值 參數,以判斷 [啟用感測器] 對話框是否顯示為強制回應視窗或非模態視窗。 此設定也會影響對話框傳回碼的行為是同步還是異步。

當對話框是模態時,它會在應用程式視窗中取得獨佔焦點,直到使用者選擇一個選項為止。而您呼叫 RequestPermissionsHRESULT 回傳碼則表示使用者的選擇。 無模式時,對話框沒有獨佔焦點,而且您立即呼叫 requestPermissions RequestPermissions 會立即傳回。 在此情況下,傳回碼會指出方法是否成功,但無法用來確定用戶的選擇。 接著,您可以藉由處理 OnStateChanged 事件,並檢查每個感測器是否有SENSOR_STATE_READY,來判斷已啟用哪些感測器。

如需傳回碼的詳細資訊,請參閱 RequestPermissions 參考頁面。

最佳做法:避免對 RequestPermissions 進行多個無模式呼叫

重複呼叫 RequestPermissions 會顯示多個 [啟用這些感測器] 對話框的實例,而且可能會讓畫面充斥對話框,而導致用戶體驗不佳。 如果您認為在第一次呼叫 RequestPermissions之後,可能會安裝其他位置感測器,而需要再次呼叫 RequestPermissions,則應該以模式方式呼叫 RequestPermissions,或等到所有位置感測器都安裝完畢再進行非模式呼叫。

感測器和位置平臺中的隱私權和安全性

要求用戶權限