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: I71e873632a99eb565d4875016d9da230e3709feb
This commit is contained in:
@@ -12712,7 +12712,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
|||||||
for (ResolveInfo receiver : receivers) {
|
for (ResolveInfo receiver : receivers) {
|
||||||
final String packageName = receiver.getComponentInfo().packageName;
|
final String packageName = receiver.getComponentInfo().packageName;
|
||||||
if (checkCrossProfilePackagePermissions(packageName, userId,
|
if (checkCrossProfilePackagePermissions(packageName, userId,
|
||||||
requiresPermission)) {
|
requiresPermission)
|
||||||
|
|| checkModifyQuietModePermission(packageName, userId)) {
|
||||||
Slog.i(LOG_TAG,
|
Slog.i(LOG_TAG,
|
||||||
String.format("Sending %s broadcast to %s.", intent.getAction(),
|
String.format("Sending %s broadcast to %s.", intent.getAction(),
|
||||||
packageName));
|
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
|
* Checks whether the package {@code packageName} has the required permissions to receive
|
||||||
* cross-profile broadcasts on behalf of the user {@code userId}.
|
* cross-profile broadcasts on behalf of the user {@code userId}.
|
||||||
|
|||||||
Reference in New Issue
Block a user