共用方式為


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

不使用這個參數。

傳回值

這個方法可以傳回下列其中一個值。

下表描述呼叫為同步時的傳回碼。

傳回碼 描述
S_OK
使用者啟用的位置服務。 此方法已成功。
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
位置平臺已停用。 系統管理員關閉位置平臺。
HRESULT_FROM_WIN32 (ERROR_CANCELLED)
使用者未啟用位置服務的存取權或取消對話方塊。
 

下表描述呼叫為非同步時的傳回碼。

傳回碼 描述
S_OK
使用者已啟用位置服務的存取權。 此方法已成功。
E_INVALIDARG
引數無效。
HRESULT_FROM_WIN32 (ERROR_ACCESS_DENIED)
位置平臺已停用。 系統管理員關閉位置平臺。 未顯示對話方塊。

備註

如果使用者選擇不啟用位置服務,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