Restrict toggle/slider slice when the preference restricted

Bug: 289980550
Test: robotest & manual
Change-Id: Id87fbf12a2722344dd07886e810e7c61a9f401aa
This commit is contained in:
Edgar Wang
2023-07-05 17:10:34 +08:00
parent 1ac510e4b1
commit ab75ea8099
9 changed files with 125 additions and 15 deletions

View File

@@ -28,6 +28,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.SettingsSlicesContract;
import android.text.TextUtils;
import android.util.ArraySet;
@@ -50,6 +51,8 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SliderPreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.Arrays;
@@ -86,6 +89,16 @@ public class SliceBuilderUtils {
return buildUnavailableSlice(context, sliceData);
}
String userRestriction = sliceData.getUserRestriction();
if (!TextUtils.isEmpty(userRestriction)) {
RestrictedLockUtils.EnforcedAdmin admin =
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(context,
userRestriction, UserHandle.myUserId());
if (admin != null) {
return buildIntentSlice(context, sliceData, controller);
}
}
switch (sliceData.getSliceType()) {
case SliceData.SliceType.INTENT:
return buildIntentSlice(context, sliceData, controller);