diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 653d3612af3..049660e1d8a 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -625,6 +625,10 @@ public class SecuritySettings extends SettingsPreferenceFragment startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); } else if (KEY_UNLOCK_SET_OR_CHANGE_PROFILE.equals(key)) { + if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm, + mProfileChallengeUserId)) { + return false; + } Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment", @@ -746,8 +750,16 @@ public class SecuritySettings extends SettingsPreferenceFragment final String key = preference.getKey(); final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils(); if (KEY_VISIBLE_PATTERN_PROFILE.equals(key)) { + if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm, + mProfileChallengeUserId)) { + return false; + } lockPatternUtils.setVisiblePatternEnabled((Boolean) value, mProfileChallengeUserId); } else if (KEY_UNIFICATION.equals(key)) { + if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm, + mProfileChallengeUserId)) { + return false; + } if ((Boolean) value) { final boolean compliantForDevice = (mLockPatternUtils.getKeyguardStoredPasswordQuality(mProfileChallengeUserId) diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 527194fb7ba..4dd203cea55 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -87,6 +87,8 @@ import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.ListView; import android.widget.TabWidget; + +import com.android.internal.app.UnlaunchableAppActivity; import com.android.internal.util.UserIcons; import java.io.IOException; @@ -1104,5 +1106,15 @@ public final class Utils extends com.android.settingslib.Utils { return Settings.Global.getInt(context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) != 0; } + + public static boolean startQuiteModeDialogIfNecessary(Context context, UserManager um, + int userId) { + if (um.isQuietModeEnabled(UserHandle.of(userId))) { + final Intent intent = UnlaunchableAppActivity.createInQuietModeDialogIntent(userId); + context.startActivity(intent); + return true; + } + return false; + } } diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index 9e2c5ff419b..3b83e489fb5 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -40,6 +40,7 @@ import android.os.Handler; import android.os.UserHandle; import android.os.UserManager; import android.support.v7.preference.Preference; +import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; @@ -808,7 +809,7 @@ public class FingerprintSettings extends SubSettings { } } - public static Preference getFingerprintPreferenceForUser(Context context, int userId) { + public static Preference getFingerprintPreferenceForUser(Context context, final int userId) { FingerprintManager fpm = (FingerprintManager) context.getSystemService( Context.FINGERPRINT_SERVICE); if (fpm == null || !fpm.isHardwareDetected()) { @@ -818,7 +819,6 @@ public class FingerprintSettings extends SubSettings { Preference fingerprintPreference = new Preference(context); fingerprintPreference.setKey(KEY_FINGERPRINT_SETTINGS); fingerprintPreference.setTitle(R.string.security_settings_fingerprint_preference_title); - Intent intent = new Intent(); final List items = fpm.getEnrolledFingerprints(userId); final int fingerprintCount = items != null ? items.size() : 0; final String clazz; @@ -832,9 +832,22 @@ public class FingerprintSettings extends SubSettings { R.string.security_settings_fingerprint_preference_summary_none); clazz = FingerprintEnrollIntroduction.class.getName(); } - intent.setClassName("com.android.settings", clazz); - intent.putExtra(Intent.EXTRA_USER_ID, userId); - fingerprintPreference.setIntent(intent); + fingerprintPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + final Context context = preference.getContext(); + final UserManager userManager = UserManager.get(context); + if (Utils.startQuiteModeDialogIfNecessary(context, userManager, + userId)) { + return false; + } + Intent intent = new Intent(); + intent.setClassName("com.android.settings", clazz); + intent.putExtra(Intent.EXTRA_USER_ID, userId); + context.startActivity(intent); + return true; + } + }); return fingerprintPreference; } }