Share via


Méthode ILocation::RequestPermissions (locationapi.h)

[L’API d’emplacement Win32 est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt l’API Windows.Devices.Geolocation . ]

Ouvre une boîte de dialogue système pour demander à l’utilisateur l’autorisation d’activer les appareils de localisation.

Syntaxe

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

Paramètres

[in] hParent

HWND pour la fenêtre parente. Ce paramètre est facultatif. Dans Windows 8, la boîte de dialogue est toujours modale si hParent est fourni, et non modale si hParent a la valeur NULL.

[in] pReportTypes

Pointeur vers un tableau IID . Ce tableau doit contenir des ID d’interface pour tous les types de rapports pour lesquels vous demandez l’autorisation. Les ID d’interface des types de rapports valides sont IID_ILatLongReport et IID_ICivicAddressReport. Le nombre d’ID doit correspondre à la valeur spécifiée via le paramètre count .

[in] count

Nombre d’ID d’interface contenus dans pReportTypes.

fModal

Ce paramètre n'est pas utilisé.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Le tableau suivant décrit les codes de retour lorsque l’appel est synchrone.

Code de retour Description
S_OK
L’utilisateur a activé les services de localisation. S_OK
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
La plateforme d’emplacement est désactivée. Un administrateur a désactivé la plateforme d’emplacement.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
L’utilisateur n’a pas activé l’accès aux services de localisation ou a annulé la boîte de dialogue.
 

Le tableau suivant décrit les codes de retour lorsque l’appel est asynchrone.

Code de retour Description
S_OK
L’utilisateur a activé l’accès aux services de localisation. S_OK
E_INVALIDARG
Un argument n’est pas valide.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
La plateforme d’emplacement est désactivée. Un administrateur a désactivé la plateforme d’emplacement. La boîte de dialogue n’a pas été affichée.

Notes

Si l’utilisateur choisit de ne pas activer les services d’emplacement, Windows n’affiche plus la boîte de dialogue autorisations.

Note Les appels asynchrones répétés à RequestPermissions affichent plusieurs instances de la boîte de dialogue Activer les services de localisation et peuvent potentiellement inonder l’écran de boîtes de dialogue, ce qui entraîne une expérience utilisateur médiocre. Si vous pensez que d’autres capteurs d’emplacement peuvent être installés après votre premier appel à RequestPermissions, nécessitant un autre appel à RequestPermissions, vous devez appeler RequestPermissions de manière synchrone ou attendre que tous les capteurs d’emplacement soient installés pour effectuer un appel asynchrone.
 
Note Un appel synchrone à partir du thread d’interface utilisateur d’une application Windows peut bloquer le thread d’interface utilisateur et rendre l’application moins réactive. Pour éviter cela, n’effectuez pas d’appel synchrone à RequestPermissions à partir du thread d’interface utilisateur.
 
Note Si une application s’exécutant en mode protégé, tel qu’un objet D’assistance de navigateur (BHO) pour Internet Explorer, appelle RequestPermissions et que l’utilisateur choisit de ne pas activer l’emplacement à l’aide de la boîte de dialogue, le fournisseur d’emplacement ne sera pas activé, mais Windows affiche à nouveau la boîte de dialogue si RequestPermissions est appelé à nouveau par le même utilisateur.
 

Exemples

L’exemple suivant montre comment appeler RequestPermissions pour demander l’autorisation pour les rapports de latitude/longitude.

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


Spécifications

   
Client minimal pris en charge Windows 7 [applications de bureau uniquement],Windows 7
Serveur minimal pris en charge Aucun pris en charge
Plateforme cible Windows
En-tête locationapi.h
DLL LocationAPI.dll