Fix do not disturb bypass user restriction

Do not disturb search result can still switch on/off when users are
restricted by DISALLOW_ADJUST_VOLUME. The DND search result is presented
by slice and there was no user restriction check when creating DND
slice, which caused DND search result can access. To prevent DND from
being access if user restriction is enabled, adding user restriction
check during creating the DND slice.

Bug: 242846154
Test: robotest pass and manual test
Change-Id: I897a99e9dda2f9f84365d96841a4c4f4cf975331
This commit is contained in:
Mill Chen
2023-07-07 19:51:36 +08:00
parent b3b27451a3
commit 45d9e390b2
2 changed files with 38 additions and 3 deletions

View File

@@ -26,6 +26,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import androidx.core.graphics.drawable.IconCompat;
@@ -40,6 +42,8 @@ import com.android.settings.Utils;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedLockUtilsInternal;
public class ZenModeSliceBuilder {
@@ -84,8 +88,11 @@ public class ZenModeSliceBuilder {
isZenModeEnabled);
final RowBuilder rowBuilder = new RowBuilder()
.setTitle(title)
.addEndItem(toggleSliceAction)
.setPrimaryAction(primarySliceAction);
if (!isManagedByAdmin(context)) {
rowBuilder.addEndItem(toggleSliceAction);
}
if (!Utils.isSettingsIntelligence(context)) {
rowBuilder.setSubtitle(subtitle);
}
@@ -152,4 +159,10 @@ public class ZenModeSliceBuilder {
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
private static boolean isManagedByAdmin(Context context) {
EnforcedAdmin enforcedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
context, UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId());
return enforcedAdmin != null;
}
}