diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 4ed38d16688..d6434680390 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -326,11 +326,13 @@ public class MasterClear extends OptionsMenuFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( - getActivity(), UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); - final UserManager um = UserManager.get(getActivity()); - if (!um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction(getActivity(), - UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) { + final Context context = getContext(); + final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(context, + UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); + final UserManager um = UserManager.get(context); + final boolean disallow = !um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction( + context, UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId()); + if (disallow && !Utils.isCarrierDemoUser(context)) { return inflater.inflate(R.layout.master_clear_disallowed_screen, null); } else if (admin != null) { View view = inflater.inflate(R.layout.admin_support_details_empty_view, null); diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index c2060ce0eb5..8869c5da6b5 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -968,7 +968,8 @@ public class SettingsActivity extends SettingsDrawerActivity // Enable/disable backup settings depending on whether the user is admin. setTileEnabled(new ComponentName(packageName, - BackupSettingsActivity.class.getName()), true, isAdmin); + BackupSettingsActivity.class.getName()), true, + isAdmin || Utils.isCarrierDemoUser(this)); setTileEnabled(new ComponentName(packageName, "com.android.settings.BackupResetDashboardAlias"), true, isAdmin); diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index f5bd2ce4ee3..803b8e548a5 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -1245,4 +1245,13 @@ public final class Utils extends com.android.settingslib.Utils { } } + public static boolean isCarrierDemoUser(Context context) { + final String carrierDemoModeSetting = + context.getString(com.android.internal.R.string.config_carrierDemoModeSetting); + return UserManager.isDeviceInDemoMode(context) + && getUserManager(context).isDemoUser() + && !TextUtils.isEmpty(carrierDemoModeSetting) + && (Settings.Secure.getInt(context.getContentResolver(), + carrierDemoModeSetting, 0) == 1); + } }