Merge "Send MANAGED_PROFILE_* broadcasts to apps with MODIFY_QUIET_MODE." into rvc-dev am: ab199ee55b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11838111

Change-Id: Ie015315abf34e3af60a046e05a57335cf69e28e2
This commit is contained in:
TreeHugger Robot
2020-06-16 07:44:25 +00:00
committed by Automerger Merge Worker

View File

@@ -12712,7 +12712,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
for (ResolveInfo receiver : receivers) {
final String packageName = receiver.getComponentInfo().packageName;
if (checkCrossProfilePackagePermissions(packageName, userId,
requiresPermission)) {
requiresPermission)
|| checkModifyQuietModePermission(packageName, userId)) {
Slog.i(LOG_TAG,
String.format("Sending %s broadcast to %s.", intent.getAction(),
packageName));
@@ -12729,6 +12730,27 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
}
/**
* Checks whether the package {@code packageName} has the {@code MODIFY_QUIET_MODE}
* permission granted for the user {@code userId}.
*/
private boolean checkModifyQuietModePermission(String packageName, @UserIdInt int userId) {
try {
final int uid = Objects.requireNonNull(
mInjector.getPackageManager().getApplicationInfoAsUser(
Objects.requireNonNull(packageName), /* flags= */ 0, userId)).uid;
return PackageManager.PERMISSION_GRANTED
== ActivityManager.checkComponentPermission(
android.Manifest.permission.MODIFY_QUIET_MODE, uid, /* owningUid= */
-1, /* exported= */ true);
} catch (NameNotFoundException ex) {
Slog.w(LOG_TAG,
String.format("Cannot find the package %s to check for permissions.",
packageName));
return false;
}
}
/**
* Checks whether the package {@code packageName} has the required permissions to receive
* cross-profile broadcasts on behalf of the user {@code userId}.