diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2015-10-15 16:19:04 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-10-15 16:19:04 +0000 |
commit | a3de81f4084bca4f66f58c03dc027aa784dcc1a0 (patch) | |
tree | 28c01031ad51c405478da596a86eb5ae726c76a6 | |
parent | 98f03db90fd6877598b6b8669fb324c70b9cfb91 (diff) | |
parent | d8c80cc7ff540c103e48cf298d196a6b66548134 (diff) | |
download | android_frameworks_opt_net_wifi-a3de81f4084bca4f66f58c03dc027aa784dcc1a0.tar.gz android_frameworks_opt_net_wifi-a3de81f4084bca4f66f58c03dc027aa784dcc1a0.tar.bz2 android_frameworks_opt_net_wifi-a3de81f4084bca4f66f58c03dc027aa784dcc1a0.zip |
am d8c80cc7: am e2ba917b: Merge "Do not throw an exception if appop\'s result is MODE_IGNORED" into mnc-dr-dev
* commit 'd8c80cc7ff540c103e48cf298d196a6b66548134':
Do not throw an exception if appop's result is MODE_IGNORED
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 2b83b6884..b02556614 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -2064,29 +2064,24 @@ public final class WifiServiceImpl extends IWifiManager.Stub { private boolean checkCallerCanAccessScanResults(String callingPackage, int uid) { if (ActivityManager.checkUidPermission(Manifest.permission.ACCESS_FINE_LOCATION, uid) == PackageManager.PERMISSION_GRANTED - && isAppOppAllowed(AppOpsManager.OP_FINE_LOCATION, callingPackage, uid)) { + && checkAppOppAllowed(AppOpsManager.OP_FINE_LOCATION, callingPackage, uid)) { return true; } if (ActivityManager.checkUidPermission(Manifest.permission.ACCESS_COARSE_LOCATION, uid) == PackageManager.PERMISSION_GRANTED - && isAppOppAllowed(AppOpsManager.OP_COARSE_LOCATION, callingPackage, uid)) { + && checkAppOppAllowed(AppOpsManager.OP_COARSE_LOCATION, callingPackage, uid)) { return true; } - // Enforce location permission for apps targeting M and later versions - boolean enforceLocationPermission = true; + boolean apiLevel23App = true; try { - enforceLocationPermission = mContext.getPackageManager().getApplicationInfo( + apiLevel23App = mContext.getPackageManager().getApplicationInfo( callingPackage, 0).targetSdkVersion >= Build.VERSION_CODES.M; } 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"); + // In case of exception, assume app's API level is 23+ } // Pre-M apps running in the foreground should continue getting scan results - if (isForegroundApp(callingPackage)) { + if (!apiLevel23App && isForegroundApp(callingPackage)) { return true; } Log.e(TAG, "Permission denial: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION " @@ -2094,7 +2089,7 @@ public final class WifiServiceImpl extends IWifiManager.Stub { return false; } - private boolean isAppOppAllowed(int op, String callingPackage, int uid) { + private boolean checkAppOppAllowed(int op, String callingPackage, int uid) { return mAppOps.noteOp(op, uid, callingPackage) == AppOpsManager.MODE_ALLOWED; } |