From 04acad99bd99e44947de5e15555f8130f66fd494 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 3 Oct 2019 12:22:52 -0700 Subject: [PATCH] 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 --- .../com/android/server/NetworkScorerAppManager.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/NetworkScorerAppManager.java b/services/core/java/com/android/server/NetworkScorerAppManager.java index bfd4247abf40f..3bcb36fd0e00d 100644 --- a/services/core/java/com/android/server/NetworkScorerAppManager.java +++ b/services/core/java/com/android/server/NetworkScorerAppManager.java @@ -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() {