вам может понадобиться добавить зависимость в ваш 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 + "");
}
}