Google Maps разрешение на использование местоположения не удалось - PullRequest
0 голосов
/ 03 марта 2020

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

 private void getLocationPermission() {
    Log.d(TAG, "getLocationPermission: getting location permissions");
    String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION};

    if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
            FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
                COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            mLocationPermissionsGranted = true;
            initMap();
            getDeviceLocation();
        } else {
            ActivityCompat.requestPermissions(this,
                    permissions,
                    LOCATION_PERMISSION_REQUEST_CODE);
        }
    } else {
        ActivityCompat.requestPermissions(this,
                permissions,
                LOCATION_PERMISSION_REQUEST_CODE);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    Log.d(TAG, "onRequestPermissionsResult: called.");
    mLocationPermissionsGranted = false;

    switch (requestCode) {
        case LOCATION_PERMISSION_REQUEST_CODE: {
            if (grantResults.length > 0) {
                for (int i = 0; i < grantResults.length; i++) {
                    if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
                        mLocationPermissionsGranted = false;
                        Log.d(TAG, "onRequestPermissionsResult: permission failed");
                        return;
                    }
                }
                Log.d(TAG, "onRequestPermissionsResult: permission granted");
                mLocationPermissionsGranted = true;
                getDeviceLocation();
                //initialize our map
                initMap();
            }
        }
    }
}

Итак, когда оно проверяется getLocationPermission, у меня нет разрешения на использование местоположения, permission alert dialog выскакивает и спрашивает меня, allow я это или нет. Но, если я нажму allow, в моем logcat я получу сообщение onRequestPermissionsResult: permission failed, что, согласно моему коду, будет означать, что я не предоставил доступ. Странная часть в том, что если я снова открою действие, используя карту, разрешения будут работать нормально.

...