Condividi tramite


Metodo ILocation::RequestPermissions (locationapi.h)

[L'API Percorso Win32 è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. Usare invece l'API Windows.Devices.Geolocation . ]

Apre una finestra di dialogo di sistema per richiedere l'autorizzazione utente per abilitare i dispositivi di posizione.

Sintassi

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

Parametri

[in] hParent

HWND per la finestra padre. Questo parametro è facoltativo e, In Windows 8 la finestra di dialogo è sempre modale se viene fornito hParent e non modale se hParent è NULL.

[in] pReportTypes

Puntatore a una matrice IID . Questa matrice deve contenere ID interfaccia per tutti i tipi di report per i quali si richiede l'autorizzazione. Gli ID interfaccia dei tipi di report validi sono IID_ILatLongReport e IID_ICivicAddressReport. Il conteggio degli ID deve corrispondere al valore specificato tramite il parametro count .

[in] count

Numero di ID dell'interfaccia contenuti in pReportTypes.

fModal

Questo parametro non viene usato.

Valore restituito

Questo metodo può restituire uno di questi valori.

La tabella seguente descrive i codici restituiti quando la chiamata è sincrona.

Codice restituito Descrizione
S_OK
Servizi di posizione abilitati per l'utente. Il metodo è riuscito.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
La piattaforma di posizione è disabilitata. Un amministratore ha disattivato la piattaforma location.
HRESULT_FROM_WIN32(ERROR_CANCELLED)
L'utente non ha abilitato l'accesso ai servizi di posizione o ha annullato la finestra di dialogo.
 

La tabella seguente descrive i codici restituiti quando la chiamata è asincrona.

Codice restituito Descrizione
S_OK
L'utente ha abilitato l'accesso ai servizi di posizione. Il metodo è riuscito.
E_INVALIDARG
Un argomento non è valido.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
La piattaforma di posizione è disabilitata. Un amministratore ha disattivato la piattaforma location. La finestra di dialogo non è stata visualizzata.

Commenti

Se l'utente sceglie di non abilitare i servizi di posizione, Windows non visualizzerà di nuovo la finestra di dialogo autorizzazioni.

Nota Le chiamate asincrone ripetute a RequestPermissions visualizzeranno più istanze della finestra di dialogo Abilita servizi di posizione e possono potenzialmente inondare la schermata con le finestre di dialogo, causando un'esperienza utente scarsa. Se si ritiene che altri sensori di posizione possano essere installati dopo la prima chiamata a RequestPermissions, richiedendo un'altra chiamata a RequestPermissions, è consigliabile chiamare RequestPermissions in modo sincrono o attendere fino a quando tutti i sensori di posizione non vengono installati per eseguire una chiamata asincrona.
 
Nota Effettuare una chiamata sincrona dal thread dell'interfaccia utente di un'applicazione Windows può bloccare il thread dell'interfaccia utente e rendere l'applicazione meno reattiva. Per evitare questo problema, non effettuare una chiamata sincrona a RequestPermissions dal thread dell'interfaccia utente.
 
Nota Se un'applicazione in esecuzione in modalità protetta, ad esempio un oggetto helper browser (BHO) per Internet Explorer, chiama RequestPermissions e l'utente sceglie di non abilitare la posizione usando la finestra di dialogo, il provider di percorsi non verrà abilitato, ma Windows visualizzerà di nuovo la finestra di dialogo se RequestPermissions viene chiamato di nuovo dallo stesso utente.
 

Esempio

Nell'esempio seguente viene illustrato come chiamare RequestPermissions per richiedere l'autorizzazione per i report di latitudine/longitudine.

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


Requisiti

   
Client minimo supportato Windows 7 [solo app desktop],Windows 7
Server minimo supportato Nessuno supportato
Piattaforma di destinazione Windows
Intestazione locationapi.h
DLL LocationAPI.dll