54

私はマップ関連の Android アプリケーションに取り組んでおり、クライアント側の開発でロケーション アクセスが有効になっているかどうかを確認する必要があります。ロケーション サービスが有効になっていない場合は、ダイアログ プロンプトを表示します。

Androidでプログラムで「ロケーションアクセス」を有効にする方法は?

4

6 に答える 6

115

以下のコードを使用して確認します。無効にすると、ダイアログ ボックスが生成されます。

public void statusCheck() {
    final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        buildAlertMessageNoGps();

    }
}

private void buildAlertMessageNoGps() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(final DialogInterface dialog, final int id) {
                    startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(final DialogInterface dialog, final int id) {
                    dialog.cancel();
                }
            });
    final AlertDialog alert = builder.create();
    alert.show();
}
于 2014-08-07T06:40:39.453 に答える
9

以下の方法を試すことができます。

GPS とネットワーク プロバイダーが有効になっているかどうかを確認するには:

public boolean canGetLocation() {
    boolean result = true;
    LocationManager lm;
    boolean gpsEnabled = false;
    boolean networkEnabled = false;

    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    // exceptions will be thrown if provider is not permitted.
    try {
        gpsEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch (Exception ex) {
    }

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

    return gpsEnabled && networkEnabled;
}

上記のコードが false を返した場合の警告ダイアログ:

public void showSettingsAlert() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

    // Setting Dialog Title
    alertDialog.setTitle("Error!");

    // Setting Dialog Message
    alertDialog.setMessage("Please ");

    // On pressing Settings button
    alertDialog.setPositiveButton(
            getResources().getString(R.string.button_ok),
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(
                            Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    startActivity(intent);
                }
            });

    alertDialog.show();
}

上記の 2 つの方法の使用方法:

if (canGetLocation()) {     
    //DO SOMETHING USEFUL HERE. ALL GPS PROVIDERS ARE CURRENTLY ENABLED                 
} else {
    //SHOW OUR SETTINGS ALERT, AND LET THE USE TURN ON ALL THE GPS PROVIDERS                                
    showSettingsAlert();
}
于 2014-08-07T06:54:33.863 に答える
3

次のスレッドをチェックアウトしてください: 位置情報サービスが有効になっているかどうかを確認するには? 位置情報サービスが有効になっているかどうかを確認する方法のかなり良い例を提供します.

于 2014-08-07T06:31:27.193 に答える