Reputation: 635
Is there any method to identify which location permission is granted by user in programmatically in Android.
like the following
I want to know a particular applications current location permission status from another app. Not for checking its run time.
Upvotes: 0
Views: 1260
Reputation: 2299
Yes, we can check it programmatically using the combination of permissions. I have created the method on the basis of the android version :
private void checkLocationPermissionState(Context context){
int fineLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
int coarseLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
int bgLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_BACKGROUND_LOCATION);
boolean isAppLocationPermissionGranted = (bgLocation == PackageManager.PERMISSION_GRANTED) &&
(coarseLocation == PackageManager.PERMISSION_GRANTED);
boolean preciseLocationAllowed = (fineLocation == PackageManager.PERMISSION_GRANTED)
&& (coarseLocation == PackageManager.PERMISSION_GRANTED);
if (preciseLocationAllowed) {
Log.e("PERMISSION","Precise location is enabled in Android 12");
} else {
Log.e("PERMISSION","Precise location is disabled in Android 12");
}
if (isAppLocationPermissionGranted) {
Log.e("PERMISSION","Location is allowed all the time");
} else if(coarseLocation == PackageManager.PERMISSION_GRANTED){
Log.e("PERMISSION","Location is allowed while using the app");
}else{
Log.e("PERMISSION","Location is not allowed.");
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
int bgLocation = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_BACKGROUND_LOCATION);
boolean isAppLocationPermissionGranted = (bgLocation == PackageManager.PERMISSION_GRANTED) &&
(coarseLocation == PackageManager.PERMISSION_GRANTED);
if (isAppLocationPermissionGranted) {
Log.e("PERMISSION","Location is allowed all the time");
} else if(coarseLocation == PackageManager.PERMISSION_GRANTED){
Log.e("PERMISSION","Location is allowed while using the app");
}else{
Log.e("PERMISSION","Location is not allowed.");
}
} else {
boolean isAppLocationPermissionGranted = (fineLocation == PackageManager.PERMISSION_GRANTED) &&
(coarseLocation == PackageManager.PERMISSION_GRANTED);
if (isAppLocationPermissionGranted) {
Log.e("PERMISSION","Location permission is granted");
} else {
Log.e("PERMISSION","Location permission is not granted");
}
}
}
Upvotes: 2