вам может понадобиться добавить зависимость в ваш build.gradle:

ользовал следующий код, и диалог, который запрашивает разрешение, показывает, как и ожидалось. Но когда я нажимаю «разрешить», это ничего не делает. Сообщение журнала не появляется, как будто разрешение не было предоставлено, поэтому я пошел к своим параметрам, чтобы проверить, было ли местоположение "включено" и было "выключено". Разве он не должен быть включен, потому что я предоставил приложению доступ к своему местоположению? Если я вручную включаю его, а затем снова запускаю приложение, как только оно запрашивает мое разрешение, оно работает и показывает сообщение журнала, но не весь смысл запрашивать разрешения (через диалог) для включения местоположения (когда выключено) если пользователь нажимает "разрешить"? Я делаю что-то неправильно ? Я должен упомянуть, что я запускаю приложение на api23

это код в моемOnCreate:

 mApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();

 mApiClient.connect();

    // Create the LocationRequest object
        mLocationRequest = LocationRequest.create()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(10 * 1000)        // 10 seconds, in milliseconds
                .setFastestInterval(1 * 1000); // 1 second, in milliseconds

а это мойOnConnected метод:

    public void onConnected(@Nullable Bundle bundle) {
            //start the service
//checking and asking for permission

            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                            MY_PERMISSION_ACCESS_FINE_LOCATION);
                }
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            Location location = LocationServices.FusedLocationApi.getLastLocation(mApiClient);

            if (location == null) {
                LocationServices.FusedLocationApi.requestLocationUpdates(mApiClient, mLocationRequest, this);

            } else {
                //If everything went fine lets get latitude and longitude
                currentLatitude = location.getLatitude();
                currentLongitude = location.getLongitude();
                Log.v("currentLatitude",currentLatitude + " WORKS " + currentLongitude + "");
            }

    }

Ответы на вопрос(2)

Ваш ответ на вопрос