jerald jacob
jerald jacob

Reputation: 635

Is there any method to identify which location permission is granted by user

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

Answers (2)

Himanshi Thakur
Himanshi Thakur

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

hossein
hossein

Reputation: 1076

yes in the setting

enter image description here

Upvotes: -1

Related Questions