diff options
| author | 2022-04-21 15:33:47 +0000 | |
|---|---|---|
| committer | 2022-04-21 15:33:47 +0000 | |
| commit | 2ca8b4def9560addca170171e033b45cb2203d3c (patch) | |
| tree | 50c2a944f1170efaa410066148334aae6580f28a | |
| parent | 6cfc6da01bd167973c06d6c2967ab2b58a8cab68 (diff) | |
| parent | 35a88760b7e72067ee273a84da7ce0e9aad1892c (diff) | |
Merge "Do not show the notification prompt on noDisplay activities" into tm-dev
| -rw-r--r-- | services/core/java/com/android/server/policy/PermissionPolicyService.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index 32e7a6a81096..89ac9e773906 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -57,6 +57,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManagerInternal; import android.content.pm.PackageManagerInternal.PackageListObserver; import android.content.pm.PermissionInfo; +import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -78,10 +79,12 @@ import android.util.Pair; import android.util.Slog; import android.util.SparseBooleanArray; +import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IAppOpsCallback; import com.android.internal.app.IAppOpsService; import com.android.internal.infra.AndroidFuture; +import com.android.internal.policy.AttributeCache; import com.android.internal.util.IntPair; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.FgThread; @@ -1064,7 +1067,8 @@ public final class PermissionPolicyService extends SystemService { ActivityInterceptorInfo info) { super.onActivityLaunched(taskInfo, activityInfo, info); if (!shouldShowNotificationDialogOrClearFlags(taskInfo, - activityInfo.packageName, info.intent, info.checkedOptions, true)) { + activityInfo.packageName, info.intent, info.checkedOptions, true) + || isNoDisplayActivity(activityInfo)) { return; } UserHandle user = UserHandle.of(taskInfo.userId); @@ -1139,6 +1143,22 @@ public final class PermissionPolicyService extends SystemService { taskInfo, currPkg, intent, null, false); } + private boolean isNoDisplayActivity(@NonNull ActivityInfo aInfo) { + final int themeResource = aInfo.getThemeResource(); + if (themeResource == Resources.ID_NULL) { + return false; + } + + boolean noDisplay = false; + final AttributeCache.Entry ent = AttributeCache.instance() + .get(aInfo.packageName, themeResource, R.styleable.Window, 0); + if (ent != null) { + noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false); + } + + return noDisplay; + } + /** * Determine if a particular task is in the proper state to show a system-triggered * permission prompt. A prompt can be shown if the task is just starting, or the task is |