Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10f2a24f authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by Android Git Automerger
Browse files

am 7336f5c9: am 5a73c552: am 1dd08a53: Merge "Enforce location permission for...

am 7336f5c9: am 5a73c552: am 1dd08a53: Merge "Enforce location permission for apps targeting M" into mnc-dev

* commit '7336f5c9':
  Enforce location permission for apps targeting M
parents 4d0527e3 7336f5c9
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.ContextWrapper;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.Binder;
import android.os.Build;
import android.os.ParcelUuid;
import android.os.Process;
import android.os.UserHandle;
@@ -280,9 +281,27 @@ final public class Utils {
            return true;
        }

        return context.checkCallingOrSelfPermission(android.Manifest.permission.
        if (context.checkCallingOrSelfPermission(android.Manifest.permission.
                ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
                && isAppOppAllowed(appOps, AppOpsManager.OP_COARSE_LOCATION, callingPackage);
                && isAppOppAllowed(appOps, AppOpsManager.OP_COARSE_LOCATION, callingPackage)) {
            return true;
        }
        // Enforce location permission for apps targeting MNC and later versions
        boolean enforceLocationPermission = true;
        try {
            enforceLocationPermission = context.getPackageManager().getApplicationInfo(
                    callingPackage, 0).targetSdkVersion >= Build.VERSION_CODES.MNC;
        } catch (PackageManager.NameNotFoundException e) {
            // In case of exception, enforce permission anyway
        }
        if (enforceLocationPermission) {
            throw new SecurityException("Need ACCESS_COARSE_LOCATION or "
                    + "ACCESS_FINE_LOCATION permission to get scan results");
        } else {
            Log.e(TAG, "Permission denial: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION "
                    + "permission to get scan results");
        }
        return false;
    }

    private static boolean isAppOppAllowed(AppOpsManager appOps, int op, String callingPackage) {