I am using android studio and compileSdkVersion is 23 in that i am using below code
if(locationManager != null){
locationManager.removeUpdates(GPSListener.this);
}
to stop gps update where GPS Listener is a class which implements LocationListener.
but in removeUpdates line i am getting below lint warning
Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with
checkPermission
) or handle a potentialSecurityException
I am not getting what is the issue in the above code. Any extra permission need to be added in manifest file?.
Regards.
Android offers two location permissions: ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION . The permission you choose determines the accuracy of the location returned by the API. android.
android.location.LocationManager. This class provides access to the system location services. These services allow applications to obtain periodic updates of the device's geographical location, or to be notified when the device enters the proximity of a given geographical location.
Since SDK 23, you should/need to check the permission before you call Location API functionality. Here is an example of how to do it:
if (locationManager != null) {
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.removeUpdates(GPSListener.this);
}
}
There is checkSelfPermission()
, which is to check if 'you' (this app) has the correct permissions. There is also checkPermission()
, which is to check if another process has the correct permissions.
Notes
ContextCompat.checkSelfPermission()
instead (thanks to JerryBrady)If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With