1. ホーム
  2. アンドロイド

[解決済み】位置情報サービスが有効になっているかどうかを確認する方法を教えてください。

2022-04-02 21:38:23

質問

Android OSでアプリを開発しています。位置情報サービスが有効になっているかどうかを確認する方法がわかりません。

有効な場合は "true"、無効な場合は "false" を返すメソッドが必要です(最後のケースでは、有効化するためのダイアログを表示することができます)。

どのように解決するのですか?

以下のコードで、gpsプロバイダーとネットワークプロバイダーが有効かどうかを確認することができます。

LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
boolean gps_enabled = false;
boolean network_enabled = false;

try {
    gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch(Exception ex) {}

try {
    network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch(Exception ex) {}

if(!gps_enabled && !network_enabled) {
    // notify user
    new AlertDialog.Builder(context)
        .setMessage(R.string.gps_network_not_enabled)
        .setPositiveButton(R.string.open_location_settings, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
            }
        })
        .setNegativeButton(R.string.Cancel,null)
        .show();    
}

そして、マニフェスト・ファイルでは、以下のパーミッションを追加する必要があります。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>