diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index e4d74b5373e0c..9f10ae6066f58 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1373,6 +1373,9 @@
100
+
+
+
false
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c6c1c8f120d75..a823d1fd8ff4c 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2017,6 +2017,7 @@
+
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index cc2c9adfcba4b..3492b2660c4ad 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -23,6 +23,7 @@ import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.MODE_ERRORED;
import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_DEFAULT;
+import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_DENIED;
import static android.content.pm.PackageInstaller.SessionParams.PERMISSION_STATE_GRANTED;
import static android.content.pm.PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION;
@@ -3655,6 +3656,26 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
for (String permission : pkg.getRequestedPermissions()) {
Integer permissionState = permissionStates.get(permission);
+
+ if (Objects.equals(permission, Manifest.permission.USE_FULL_SCREEN_INTENT)
+ && permissionState == null) {
+ final PackageStateInternal ps;
+ final long token = Binder.clearCallingIdentity();
+ try {
+ ps = mPackageManagerInt.getPackageStateInternal(pkg.getPackageName());
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ final String[] useFullScreenIntentPackageNames =
+ mContext.getResources().getStringArray(
+ com.android.internal.R.array.config_useFullScreenIntentPackages);
+ final boolean canUseFullScreenIntent = (ps != null && ps.isSystem())
+ || ArrayUtils.contains(useFullScreenIntentPackageNames,
+ pkg.getPackageName());
+ permissionState = canUseFullScreenIntent ? PERMISSION_STATE_GRANTED
+ : PERMISSION_STATE_DENIED;
+ }
+
if (permissionState == null || permissionState == PERMISSION_STATE_DEFAULT) {
continue;
}