ISensorManager::RequestPermissions 方法 (sensorsapi.h)
開啟系統對話框以要求使用者存取感測器數據的許可權。
語法
HRESULT RequestPermissions(
[in] HWND hParent,
[in] ISensorCollection *pSensors,
[in] BOOL fModal
);
參數
[in] hParent
對於 Windows 8,如果提供 hParent 值,則對話框將會強制回應父視窗。 如果 hParent 為 NULL,則對話框將不會為強制回應。 對話框一律為同步。
針對 Windows 7,HWND 會處理可作為許可權對話框父代的視窗。 如果 fModal 為 TRUE,則必須為 NULL。
[in] pSensors
對於 Windows 8,不會使用此值。
針對 Windows 7,pSensors 是 ISensorCollection 介面的指標,其中包含要求許可權的感測器清單。
[in] fModal
對於 Windows 8,不會使用此值。 請參閱 hParent 以控制形式。
針對 Windows 7,fModal 是指定對話框模式的 BOOL 。 如果 hParent 不是 Null,則必須為 FALSE。
傳回值
下表描述同步結果的傳回碼。
傳回碼 | 描述 |
---|---|
|
用戶已啟用感測器。 |
|
用戶選擇停用感測器。 |
|
使用者已取消對話框,或拒絕提高許可權以顯示對話框的許可權。 |
下表描述異步結果的傳回碼。
傳回碼 | 描述 |
---|---|
|
感測器集合中的所有感測器都會顯示,讓用戶能夠啟用。 此方法已成功。 |
|
已向用戶顯示感測器集合中的部分感測器。 某些感測器可能已從集合中移除;例如,因為使用者先前已選擇將其保持停用。 此方法已成功。 |
|
引數無效。 |
|
指標為 Null。 |
|
使用者先前已停用感測器集合中的所有感測器。 未顯示對話框。 |
備註
從使用者介面進行同步呼叫 (UI) Windows 應用程式的線程,可以封鎖 UI 線程,並讓應用程式沒有回應。 若要避免這種情況,請勿從 將 fModal 設定為 TRUE 的 UI 線程呼叫此方法。
如果以受保護模式執行的應用程式或外掛程式,例如當 Internet Explorer 在受保護模式中執行時,瀏覽器協助程式物件 (BHO) 、呼叫 RequestPermissions,而使用者會在對話框中選擇 [不要啟用這個位置感測器] 選項,如果相同使用者再次呼叫 RequestPermissions,Windows 就會再次顯示對話框。 在受保護模式中執行的應用程式可以選擇避免在啟動時呼叫 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);
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | 都不支援 |
目標平台 | Windows |
標頭 | sensorsapi.h |
程式庫 | Sensorsapi.lib |
Dll | Sensorsapi.dll |