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

Commit 04acad99 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Do not blame network scorer apps for permission access.

A note-op should be used when data is delivered to an app. If no data is
delivered to the app, we should either use checkOp or
PermissionChecker.checkPermissionForPreflight (which uses checkOp
internally).

Test: None
Change-Id: I0742ddd6a689e356b23499ed16c3d7a6ccd5ced7
parent ff53253c
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -18,10 +18,10 @@ package com.android.server;

import android.Manifest.permission;
import android.annotation.Nullable;
import android.app.AppOpsManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.PermissionChecker;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
@@ -210,14 +210,9 @@ public class NetworkScorerAppManager {
    }

    private boolean canAccessLocation(int uid, String packageName) {
        final PackageManager pm = mContext.getPackageManager();
        final AppOpsManager appOpsManager =
                (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
        return isLocationModeEnabled()
                && pm.checkPermission(permission.ACCESS_COARSE_LOCATION, packageName)
                == PackageManager.PERMISSION_GRANTED
                && appOpsManager.noteOp(AppOpsManager.OP_COARSE_LOCATION, uid, packageName)
                == AppOpsManager.MODE_ALLOWED;
        return isLocationModeEnabled() && PermissionChecker.checkPermissionForPreflight(mContext,
                permission.ACCESS_COARSE_LOCATION, PermissionChecker.PID_UNKNOWN, uid, packageName)
                == PermissionChecker.PERMISSION_GRANTED;
    }

    private boolean isLocationModeEnabled() {