Получение RESOLUTION_REQUIRED всегда, даже если пользователь нажимает кнопку «ОК» в случае проверки настроек местоположения

Мой LocationRequest имеет значение PRIORITY_HIGH_ACCURACY. Но в устройстве xiaomi redmi note 5, если я нажимаю кнопку «ОК» в диалоговом окне настроек местоположения, он всегда возвращает 0 с помощью метода onActivityResult (), и я получаю «com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED». Но я проверил на некоторых других устройствах, он работает нормально. Я использовал этот gps с включенной/не включенной проверкой внутри фрагмента.

/////Code that prompts up the dialog

SettingsClient client = LocationServices.getSettingsClient(getActivity ());
        Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());

        task.addOnSuccessListener(getActivity (), new OnSuccessListener<LocationSettingsResponse>() {
            @Override
            public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
                // All location settings are satisfied. The client can initialize
                // location requests here.
                // ...
            }
        });

        task.addOnFailureListener(getActivity (), new OnFailureListener () {
            @Override
            public void onFailure(@NonNull Exception e) {
                  if (e instanceof ResolvableApiException) {
                    // Location settings are not satisfied, but this can be fixed
                    // by showing the user a dialog.
                    try {
                        // Show the dialog by calling startResolutionForResult(),
                        // and check the result in onActivityResult().
                        ResolvableApiException resolvable = (ResolvableApiException) e;
                        resolvable.startResolutionForResult(getActivity (),
                                REQUEST_CHECK_SETTINGS);
                    } catch (IntentSender.SendIntentException sendEx) {
                        // Ignore the error.
                    }
                }
            }
        });

/////// onActivityResult() method inside my fragment
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        try {
            super.onActivityResult (requestCode, resultCode, data);
            switch (resultCode) {
                case -1:
                    requestLocationUpdates ();

                    break;
                case 0:
                   displayLocationSettingsRequest (getContext ());
                    break;
                default:
                    super.onActivityResult (requestCode, resultCode, data);
                    break;
            }
        } catch (Exception ex) {

        }


    }

person Shadman Sakib    schedule 05.04.2019    source источник


Ответы (1)


Я нашел ссылку: https://stackoverflow.com/a/58331118

Проверьте объект запроса местоположения. Когда я использую,

mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

он неоднократно запускает исключение com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED.

Когда я изменился на,

mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

это работает нормально.

Пожалуйста, попробуйте и опубликуйте свои обновления.

person vishnu benny    schedule 09.02.2021