diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 540c93f28ed..ff309bda134 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -286,11 +286,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 f92df9de521..4882ad1768e 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -1139,7 +1139,8 @@ public class SettingsActivity extends SettingsDrawerActivity } } setTileEnabled(new ComponentName(packageName, - BackupSettingsActivity.class.getName()), hasBackupActivity, isAdmin, pm); + BackupSettingsActivity.class.getName()), hasBackupActivity, + isAdmin || Utils.isCarrierDemoUser(this), pm); } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index eec269fca9d..7d1155095e8 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -1207,4 +1207,13 @@ public final class Utils extends com.android.settingslib.Utils { } return false; } + + 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; + } }