here is my code and it works perfectly fine.
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mMap.setMyLocationEnabled(true); }
But I don't like such a big code on every check, and want to delegate it to a method in my utility class.
if (Utils.hasMapLocationPermissions(getActivity())) { mMap.setMyLocationEnabled(true); }
But setMyLocationEnabled
has annotation @RequiresPermission
And thus I can't delegate it to a method, because lint and editor shows it as an error.
Is there some annotation to write on my utility method and suppress lint?
Something like this
@ChecksPermission public boolean hasMapLocationPermissions(Activity activity) { return // my checking logic.. }
checkSelfPermission(activity, Manifest. permission. X) checks if any permission is already granted, if you check out other answers they do the same, and rest of the code asks for the permissions not granted.
The method shouldShowRequestPermissionRationale() can be used to check whether the user selected the 'never asked again' option and denied the permission.
Open Settings and choose Apps & notifications. Find and select the app you want to check permissions for. Tap Permissions. Now you can see all the app's permissions.
You can rename your method such as checkLocationPermission(Activity activity)
. I´ve discovered that your method's name must start with "check" and end with "Permission" to pass Lint warnings.
For example:
public static boolean checkLocationPermission(Context context) { return ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED; }
You can suppress this error in both the editor and in lint reports by annotating your method with @SuppressWarnings("MissingPermission")
, or you can suppress the error for just a single statement by putting //noinspection MissingPermission
above that line.
For example:
@SuppressWarnings("MissingPermission") public boolean hasMapLocationPermissions(Activity activity) { // your checking logic }
Or:
if (Utils.hasMapLocationPermissions(getActivity())) { //noinspection MissingPermission mMap.setMyLocationEnabled(true); }
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