管理使用者權限

感應器 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 ,或等到所有定位感應器都安裝為無模式呼叫。

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

要求使用者權限