Merge "Simulate installer denying USE_FULL_SCREEN_INTENT unless allowlisted." into udc-dev
This commit is contained in:
@@ -1373,6 +1373,9 @@
|
||||
<!-- Number of notifications to keep in the notification service historical archive -->
|
||||
<integer name="config_notificationServiceArchiveSize">100</integer>
|
||||
|
||||
<!-- List of packages that will be able to use full screen intent in notifications by default -->
|
||||
<string-array name="config_useFullScreenIntentPackages" translatable="false" />
|
||||
|
||||
<!-- Allow the menu hard key to be disabled in LockScreen on some devices -->
|
||||
<bool name="config_disableMenuKeyInLockScreen">false</bool>
|
||||
|
||||
|
||||
@@ -2017,6 +2017,7 @@
|
||||
<java-symbol type="integer" name="config_notificationsBatteryMediumARGB" />
|
||||
<java-symbol type="integer" name="config_notificationsBatteryNearlyFullLevel" />
|
||||
<java-symbol type="integer" name="config_notificationServiceArchiveSize" />
|
||||
<java-symbol type="array" name="config_useFullScreenIntentPackages" />
|
||||
<java-symbol type="integer" name="config_previousVibrationsDumpLimit" />
|
||||
<java-symbol type="integer" name="config_defaultVibrationAmplitude" />
|
||||
<java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" />
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user