ILocation::RequestPermissions 方法 (locationapi.h)
[Win32 位置 API 可用於需求一節中指定的作業系統。 它在後續版本中可能會變更或無法使用。 請改用 Windows.Devices.Geolocation API。 ]
開啟系統對話方塊,以要求使用者啟用位置裝置的許可權。
語法
HRESULT RequestPermissions(
[in] HWND hParent,
[in] IID *pReportTypes,
[in] ULONG count,
BOOL fModal
);
參數
[in] hParent
父視窗的HWND。 這是選擇性參數。 在 Windows 8 中,如果提供 hParent ,則對話方塊一律為強制回應,如果 hParent 為 Null 則為強制回應。
[in] pReportTypes
IID陣列的指標。 此陣列必須包含您要求許可權之所有報表類型的介面識別碼。 有效報表類型的介面識別碼IID_ILatLongReport和IID_ICivicAddressReport。 識別碼計數必須符合透過 count 參數指定的值。
[in] count
pReportTypes中包含的介面識別碼計數。
fModal
不使用這個參數。
傳回值
這個方法可以傳回下列其中一個值。
下表描述呼叫為同步時的傳回碼。
傳回碼 | 描述 |
---|---|
|
使用者啟用的位置服務。 此方法已成功。 |
|
位置平臺已停用。 系統管理員關閉位置平臺。 |
|
使用者未啟用位置服務的存取權或取消對話方塊。 |
下表描述呼叫為非同步時的傳回碼。
傳回碼 | 描述 |
---|---|
|
使用者已啟用位置服務的存取權。 此方法已成功。 |
|
引數無效。 |
|
位置平臺已停用。 系統管理員關閉位置平臺。 未顯示對話方塊。 |
備註
如果使用者選擇不啟用位置服務,Windows 將不會再次顯示許可權對話方塊。
注意重複對 RequestPermissions的非同步呼叫會顯示 [啟用位置服務] 對話方塊的多個實例,而且可能會用對話方塊填滿畫面,因而造成使用者體驗不佳。 如果您認為第一次呼叫 RequestPermissions之後可能會安裝其他定位感應器,而需要對 RequestPermissions進行另一次呼叫,您應該同步呼叫 RequestPermissions ,或等到所有定位感應器都安裝為進行非同步呼叫。
注意 從使用者介面進行同步呼叫 (UI) Windows 應用程式的執行緒,可以封鎖 UI 執行緒,並使應用程式回應較少。 若要避免這種情況,請勿從 UI 執行緒對 RequestPermissions 進行同步呼叫。
注意 如果以受保護模式執行的應用程式,例如 Browser Helper Object (BHO) for Internet Explorer、呼叫 RequestPermissions,而且使用者選擇不使用對話方塊啟用位置,則不會啟用位置提供者,但如果相同使用者再次呼叫 RequestPermissions ,Windows 就會再次顯示對話方塊。
範例
下列範例示範如何呼叫 RequestPermissions 以要求緯度/經度報告的許可權。
// Array of report types of interest. Other ones include IID_ICivicAddressReport
IID REPORT_TYPES[] = { IID_ILatLongReport };
// Request permissions for this user account to receive location data for all the
// types defined in REPORT_TYPES (which is currently just one report type)
// The last parameter is not used.
if (FAILED(spLocation->RequestPermissions(
NULL,
REPORT_TYPES,
ARRAYSIZE(REPORT_TYPES),
TRUE)))
{
wprintf(L"Warning: Unable to request permissions.\n");
}
需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式],Windows 7 |
最低支援的伺服器 | 都不支援 |
目標平台 | Windows |
標頭 | locationapi.h |
Dll | LocationAPI.dll |