次の方法で共有


ILocation::RequestPermissions メソッド (locationapi.h)

[Win32 Location 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 配列へのポインター。 この配列には、アクセス許可を要求するすべてのレポートの種類のインターフェイス ID が含まれている必要があります。 有効なレポートの種類のインターフェイス ID はIID_ILatLongReportされ、IID_ICivicAddressReportされます。 ID の数は、 count パラメーターで指定された値と一致する必要があります。

[in] count

pReportTypes に含まれるインターフェイス ID の数。

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 を同期的に呼び出すか、すべての場所センサーがインストールされるまで待機して非同期呼び出しを行う必要があります。
 
メモ Windows アプリケーションのユーザー インターフェイス (UI) スレッドから同期呼び出しを行うと、UI スレッドがブロックされ、アプリケーションの応答性が低下する可能性があります。 これを防ぐために、UI スレッドから RequestPermissions を同期的に呼び出さないでください。
 
メモインターネット エクスプローラーのブラウザー ヘルパー オブジェクト (BHO) などの保護モードで実行されているアプリケーションが 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