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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user