Não é possível ativar o local no android api23?
Eu usei o código a seguir e o diálogo que solicita permissão é exibido conforme o esperado. Mas quando clico em "permitir", não faz nada. A mensagem de log não aparece como se a permissão não tivesse sido concedida; por isso, fui aos meus parâmetros para verificar se o local está "ativado" e "desativado". Não deveria estar ativado porque concedeu acesso ao aplicativo ao meu local? Se eu ativá-lo manualmente e depois executar o aplicativo novamente, uma vez que ele solicite minha permissão, ele funcionará e mostrará a mensagem de log, mas não é o objetivo de solicitar permissões (via diálogo) para ativar o local (quando está desativado) se o usuário clicar em "permitir"? Estou fazendo algo errado ? Devo mencionar que estou executando o aplicativo na api23
é o código no meuOncreate:
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
e este é o meuOnConnected método:
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 + "");
}
}