Я использовал следующий код и диалог, который запрашивает разрешения, как ожидается. Но когда я нажимаю «разрешить», он ничего не делает. Сообщение журнала не отображается так, как будто разрешение не было предоставлено, поэтому я перешел к моим параметрам, чтобы проверить, включено ли местоположение, и оно было отключено. Разве это не должно было быть, потому что я предоставил доступ к моему местоположению? Если я вручную включил его, а затем снова запустил приложение, как только он запросит мое разрешение, он будет работать и отображает сообщение журнала, но не является полным требованием разрешений (через диалог), чтобы включить местоположение (когда он выключен), если пользователь нажимает «разрешить»? Я что-то не так? Следует отметить, что я бегу приложение на api23Не удается включить местоположение на android 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 + "");
}
}
Разрешение приложения полностью отличается от настройки местоположения. Для запроса пользователя включить режим местоположения см. Здесь: http://stackoverflow.com/a/31816683/4409409 –