Freigeben über


ILocation::RequestPermissions-Methode (locationapi.h)

[Die Win32-Standort-API ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt Anforderungen angegeben sind. Es kann in nachfolgenden Versionen geändert oder entfernt werden. Verwenden Sie stattdessen die Windows.Devices.Geolocation-API . ]

Öffnet ein Systemdialogfeld, um die Benutzerberechtigung zum Aktivieren von Standortgeräten anzufordern.

Syntax

HRESULT RequestPermissions(
  [in] HWND  hParent,
  [in] IID   *pReportTypes,
  [in] ULONG count,
       BOOL  fModal
);

Parameter

[in] hParent

HWND für das übergeordnete Fenster. Dieser Parameter ist optional. In Windows 8 ist das Dialogfeld immer modal, wenn hParent bereitgestellt wird, und nicht modal, wenn hParent NULL ist.

[in] pReportTypes

Zeiger auf ein IID-Array . Dieses Array muss Schnittstellen-IDs für alle Berichtstypen enthalten, für die Sie eine Berechtigung anfordern. Die Schnittstellen-IDs der gültigen Berichtstypen sind IID_ILatLongReport und IID_ICivicAddressReport. Die Anzahl der IDs muss mit dem über den Count-Parameter angegebenen Wert übereinstimmen.

[in] count

Die Anzahl der in pReportTypes enthaltenen Schnittstellen-IDs.

fModal

Dieser Parameter wird nicht verwendet.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

In der folgenden Tabelle werden Rückgabecodes beschrieben, wenn der Aufruf synchron ist.

Rückgabecode BESCHREIBUNG
S_OK
Die vom Benutzer aktivierten Standortdienste. Die Methode wurde erfolgreich ausgeführt.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Die Standortplattform ist deaktiviert. Ein Administrator hat die Standortplattform deaktiviert.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
Der Benutzer hat den Zugriff auf Standortdienste nicht aktiviert oder das Dialogfeld abgebrochen.
 

In der folgenden Tabelle werden Rückgabecodes beschrieben, wenn der Aufruf asynchron ist.

Rückgabecode BESCHREIBUNG
S_OK
Der Benutzer hat den Zugriff auf Standortdienste aktiviert. Die Methode wurde erfolgreich ausgeführt.
E_INVALIDARG
Ein Argument ist ungültig.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
Die Standortplattform ist deaktiviert. Ein Administrator hat die Standortplattform deaktiviert. Das Dialogfeld wurde nicht angezeigt.

Hinweise

Wenn der Benutzer die Standortdienste nicht aktiviert, zeigt Windows das Dialogfeld Berechtigungen nicht mehr an.

Hinweis Wiederholte asynchrone Aufrufe von RequestPermissions zeigen mehrere Instanzen des Dialogfelds Standortdienste aktivieren an und können den Bildschirm möglicherweise mit Dialogfeldern überfluten, was zu einer schlechten Benutzererfahrung führt. Wenn Sie der Meinung sind, dass nach dem ersten Aufruf von RequestPermissions möglicherweise andere Standortsensoren installiert werden, die einen weiteren Aufruf von RequestPermissions erfordern, sollten Sie Entweder RequestPermissions synchron aufrufen oder warten, bis alle Standortsensoren installiert sind, um einen asynchronen Aufruf auszuführen.
 
Hinweis Durch einen synchronen Aufruf aus dem Benutzeroberflächenthread einer Windows-Anwendung kann der UI-Thread blockiert und die Reaktionsfähigkeit der Anwendung verringert werden. Um dies zu verhindern, führen Sie keinen synchronen Aufruf von RequestPermissions aus dem UI-Thread aus.
 
Hinweis Wenn eine Anwendung, die im geschützten Modus ausgeführt wird, z. B. ein Browserhilfsobjekt (BHO) für internet Explorer, RequestPermissions aufruft und der Benutzer den Standort mithilfe des Dialogfelds nicht aktiviert, wird der Standortanbieter nicht aktiviert, aber Windows zeigt das Dialogfeld erneut an, wenn RequestPermissions vom gleichen Benutzer erneut aufgerufen wird.
 

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie RequestPermissions aufgerufen wird, um die Berechtigung für Breiten-/Längengradberichte anzufordern.

             // 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");
            }


Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps],Windows 7
Unterstützte Mindestversion (Server) Nicht unterstützt
Zielplattform Windows
Kopfzeile locationapi.h
DLL LocationAPI.dll