diff options
| author | 2022-12-02 17:19:51 +0000 | |
|---|---|---|
| committer | 2022-12-02 17:19:51 +0000 | |
| commit | 59e6b3c815debcb9ee10095c28d1d0c51a2e302b (patch) | |
| tree | cdbc6ee9d3a932e7f8d62a58af7306a5da25db5f | |
| parent | b9ede251d90c872ffc895e646670ddef003b7587 (diff) | |
| parent | bf16066bfea083bbc6c773f8dfbbe86945cd0584 (diff) | |
Merge "Only evaluate the appops when the preflight check says soft denied"
| -rw-r--r-- | core/java/android/app/ForegroundServiceTypePolicy.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/core/java/android/app/ForegroundServiceTypePolicy.java b/core/java/android/app/ForegroundServiceTypePolicy.java index 63fdc2e1b686..332aaddef950 100644 --- a/core/java/android/app/ForegroundServiceTypePolicy.java +++ b/core/java/android/app/ForegroundServiceTypePolicy.java @@ -58,6 +58,7 @@ import android.hardware.usb.UsbManager; import android.healthconnect.HealthConnectManager; import android.os.RemoteException; import android.os.ServiceManager; +import android.permission.PermissionCheckerManager; import android.util.ArraySet; import android.util.SparseArray; @@ -880,11 +881,12 @@ public abstract class ForegroundServiceTypePolicy { int checkPermission(@NonNull Context context, @NonNull String name, int callerUid, int callerPid, String packageName, boolean allowWhileInUse) { // Simple case, check if it's already granted. - if (PermissionChecker.checkPermissionForPreflight(context, name, - callerPid, callerUid, packageName) == PERMISSION_GRANTED) { + @PackageManager.PermissionResult int result; + if ((result = PermissionChecker.checkPermissionForPreflight(context, name, + callerPid, callerUid, packageName)) == PERMISSION_GRANTED) { return PERMISSION_GRANTED; } - if (allowWhileInUse) { + if (allowWhileInUse && result == PermissionCheckerManager.PERMISSION_SOFT_DENIED) { // Check its appops final int opCode = AppOpsManager.permissionToOpCode(name); final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class); |