summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jing Ji <jji@google.com> 2022-12-02 17:19:51 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-12-02 17:19:51 +0000
commit59e6b3c815debcb9ee10095c28d1d0c51a2e302b (patch)
treecdbc6ee9d3a932e7f8d62a58af7306a5da25db5f
parentb9ede251d90c872ffc895e646670ddef003b7587 (diff)
parentbf16066bfea083bbc6c773f8dfbbe86945cd0584 (diff)
Merge "Only evaluate the appops when the preflight check says soft denied"
-rw-r--r--core/java/android/app/ForegroundServiceTypePolicy.java8
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);