LocationSettingsRequest возвращает 0 для onActivityResult, даже если нажата кнопка ok - PullRequest
0 голосов
/ 24 октября 2018

Я использую следующий код, чтобы показать всплывающее окно для включения местоположения

        LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
            .addLocationRequest(mLocationRequest);
    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.
            // ...
            getUserLocation();
        }
    });

    task.addOnFailureListener(getActivity(), new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            int statusCode = ((ApiException) e).getStatusCode();
            Log.d("AMOD", "onFailure " + statusCode);
            switch (statusCode) {
                case CommonStatusCodes.RESOLUTION_REQUIRED:
                    // Location settings are not satisfied, but this can be fixed
                    // by showing the user a dialog.
                    try {

                        ResolvableApiException resolvable = (ResolvableApiException) e;
                        resolvable.startResolutionForResult(getActivity(),
                                REQUEST_CHECK_SETTINGS);
                    } catch (IntentSender.SendIntentException sendEx) {
                        // Ignore the error.
                    }
                    break;
                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                    // Location settings are not satisfied. However, we have no way
                    // to fix the settings so we won't show the dialog.
                    break;
            }
        }
    });

Ниже приведен код для отображения всплывающего окна, как показано ниже enter image description here

Но иногдадаже если пользователь нажимает ОК Я получаю Resposne 0, т. е. RESULT_CANCEL Это происходит после обновления сервисов воспроизведения до 16.0.0

.ссылка для более подробной информации

https://issuetracker.google.com/issues/118347902

1 Ответ

0 голосов
/ 31 октября 2018

Я только 50 раз пытался воспроизвести это, и я всегда получал код -1 (Pixel 3 с Android Pie).Но я получаю 0 примерно вдвое меньше времени на моем Nexus 5x под управлением Oreo.

Я не могу точно определить, что вы делаете неправильно, но вот пример проекта, который я сделал, который делает то же самое и работает правильно каждый развремя:

https://github.com/gavingt/basic_location_improved

...