Reputation: 11
I need set gps in my Android application. But funcion requestLocationUpdates required check perrmision in this way:
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
return;
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
If i remove return (from if) app crash. If i put return function requestLocationUpdates will not be called!
How fix it?
Upvotes: 0
Views: 37
Reputation: 1125
You must not call requestLocationUpdates just after requestPermissions.
requestPermissions is an asynchronous call, "this" (your activity) is your listener
You have to implement in your activity:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//check if all the grantResult are equal to PackageManager.PERMISSION_GRANTED
}
In that fonction check if the permission is accepted and if TRUE, then call your requestLocationUpdates.
Upvotes: 2