1

In my android app, I want to display the "Use Location?" dialog, see image below. I followed the Google Developer Guide here and I read the SO Question here.

I can show the Dialog, my only problem is that the dialog ask for

Use Google's location service, sending anonymous location to Google even when no apps are running

enter image description here

I don't want that! Is there a way to open the dialog without that?

Thats my code:

/**
 * Prompt user to enable GPS and Location Services
 * @param activity
 */
//https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi
public static void locationChecker(final Activity activity) {
    GoogleApiClient googleApiClient = new GoogleApiClient.Builder(activity).addApi(LocationServices.API).build();
    googleApiClient.connect();

    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);

    builder.setAlwaysShow(true);

    PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build());
    result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
        @Override
        public void onResult(LocationSettingsResult result) {
            final Status status = result.getStatus();
            final LocationSettingsStates state = result.getLocationSettingsStates();
            switch (status.getStatusCode()) {
            case LocationSettingsStatusCodes.SUCCESS:
                // All location settings are satisfied. The client can initialize location
                // requests here.
                break;
            case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                // Location settings are not satisfied. But could be fixed by showing the user
                // a dialog.
                try {
                    // Show the dialog by calling startResolutionForResult(),
                    // and check the result in onActivityResult().
                    status.startResolutionForResult(activity, REQUEST_CHECK_SETTINGS);
                } catch (IntentSender.SendIntentException e) {
                    // Ignore the error.
                }
                break;
            case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                EnlufDialog.showDeviceHasNoGpsToast();
                // Location settings are not satisfied. However, we have no way to fix the
                // settings so we won't show the dialog.

                break;
            }
        }
    });
}
Community
  • 1
  • 1
lukas
  • 495
  • 4
  • 13
  • Why does this matter to you? This is the location setting for the entire device, not just your app. The user should be able to use whatever location providers they want for their whole device and it shouldn't impact your application. – Karakuri Oct 05 '16 at 13:53

0 Answers0