ChooseLockGeneric.java revision 17e9e1933055b207473b488595b2887bfcaea32e
1abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn/* 2abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * Copyright (C) 2010 The Android Open Source Project 3abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * 4abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * you may not use this file except in compliance with the License. 6abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * You may obtain a copy of the License at 7abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * 8abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * 10abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * Unless required by applicable law or agreed to in writing, software 11abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * See the License for the specific language governing permissions and 14abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn * limitations under the License. 15abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn */ 16abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn 17abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackbornpackage com.android.settings; 18abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn 19abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackbornimport com.android.internal.widget.LockPatternUtils; 20abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn 2117e9e1933055b207473b488595b2887bfcaea32eJim Millerimport android.app.Activity; 224037c7f27c849a1ada0980ad881636fc940a0b85Dianne Hackbornimport android.app.admin.DevicePolicyManager; 23abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackbornimport android.content.Context; 24abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackbornimport android.content.Intent; 25abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackbornimport android.os.Bundle; 26bbb4afa19f75694c585506b0c091372d60e07ca7Jim Millerimport android.preference.Preference; 27bbb4afa19f75694c585506b0c091372d60e07ca7Jim Millerimport android.preference.PreferenceActivity; 28bbb4afa19f75694c585506b0c091372d60e07ca7Jim Millerimport android.preference.PreferenceCategory; 29bbb4afa19f75694c585506b0c091372d60e07ca7Jim Millerimport android.preference.PreferenceScreen; 30bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 31bbb4afa19f75694c585506b0c091372d60e07ca7Jim Millerpublic class ChooseLockGeneric extends PreferenceActivity { 32abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn 33abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn @Override 3417e9e1933055b207473b488595b2887bfcaea32eJim Miller public Intent getIntent() { 3517e9e1933055b207473b488595b2887bfcaea32eJim Miller Intent modIntent = new Intent(super.getIntent()); 3617e9e1933055b207473b488595b2887bfcaea32eJim Miller modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ChooseLockGenericFragment.class.getName()); 3717e9e1933055b207473b488595b2887bfcaea32eJim Miller modIntent.putExtra(EXTRA_NO_HEADERS, true); 3817e9e1933055b207473b488595b2887bfcaea32eJim Miller return modIntent; 3917e9e1933055b207473b488595b2887bfcaea32eJim Miller } 40bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 4117e9e1933055b207473b488595b2887bfcaea32eJim Miller public static class ChooseLockGenericFragment extends SettingsPreferenceFragment { 4217e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final int MIN_PASSWORD_LENGTH = 4; 4317e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String KEY_UNLOCK_SET_OFF = "unlock_set_off"; 4417e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String KEY_UNLOCK_SET_NONE = "unlock_set_none"; 4517e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String KEY_UNLOCK_SET_PIN = "unlock_set_pin"; 4617e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String KEY_UNLOCK_SET_PASSWORD = "unlock_set_password"; 4717e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String KEY_UNLOCK_SET_PATTERN = "unlock_set_pattern"; 4817e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final int CONFIRM_EXISTING_REQUEST = 100; 4917e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String PASSWORD_CONFIRMED = "password_confirmed"; 5017e9e1933055b207473b488595b2887bfcaea32eJim Miller private static final String CONFIRM_CREDENTIALS = "confirm_credentials"; 5117e9e1933055b207473b488595b2887bfcaea32eJim Miller 5217e9e1933055b207473b488595b2887bfcaea32eJim Miller private ChooseLockSettingsHelper mChooseLockSettingsHelper; 5317e9e1933055b207473b488595b2887bfcaea32eJim Miller private DevicePolicyManager mDPM; 5417e9e1933055b207473b488595b2887bfcaea32eJim Miller private boolean mPasswordConfirmed = false; 5517e9e1933055b207473b488595b2887bfcaea32eJim Miller 5617e9e1933055b207473b488595b2887bfcaea32eJim Miller @Override 5717e9e1933055b207473b488595b2887bfcaea32eJim Miller public void onCreate(Bundle savedInstanceState) { 5817e9e1933055b207473b488595b2887bfcaea32eJim Miller super.onCreate(savedInstanceState); 5917e9e1933055b207473b488595b2887bfcaea32eJim Miller 6017e9e1933055b207473b488595b2887bfcaea32eJim Miller mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 6117e9e1933055b207473b488595b2887bfcaea32eJim Miller mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity()); 6217e9e1933055b207473b488595b2887bfcaea32eJim Miller 6317e9e1933055b207473b488595b2887bfcaea32eJim Miller if (savedInstanceState != null) { 6417e9e1933055b207473b488595b2887bfcaea32eJim Miller mPasswordConfirmed = savedInstanceState.getBoolean(PASSWORD_CONFIRMED); 6517e9e1933055b207473b488595b2887bfcaea32eJim Miller } 66bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 6717e9e1933055b207473b488595b2887bfcaea32eJim Miller if (!mPasswordConfirmed) { 6817e9e1933055b207473b488595b2887bfcaea32eJim Miller ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this.getActivity(), this); 6917e9e1933055b207473b488595b2887bfcaea32eJim Miller if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, null, null)) { 7017e9e1933055b207473b488595b2887bfcaea32eJim Miller mPasswordConfirmed = true; // no password set, so no need to confirm 7117e9e1933055b207473b488595b2887bfcaea32eJim Miller updatePreferencesOrFinish(); 7217e9e1933055b207473b488595b2887bfcaea32eJim Miller } 7317e9e1933055b207473b488595b2887bfcaea32eJim Miller } else { 74bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller updatePreferencesOrFinish(); 75bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 76bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 77bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 7817e9e1933055b207473b488595b2887bfcaea32eJim Miller @Override 7917e9e1933055b207473b488595b2887bfcaea32eJim Miller public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 8017e9e1933055b207473b488595b2887bfcaea32eJim Miller Preference preference) { 8117e9e1933055b207473b488595b2887bfcaea32eJim Miller final String key = preference.getKey(); 8217e9e1933055b207473b488595b2887bfcaea32eJim Miller boolean handled = true; 8317e9e1933055b207473b488595b2887bfcaea32eJim Miller if (KEY_UNLOCK_SET_OFF.equals(key)) { 8417e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, true); 8517e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_NONE.equals(key)) { 8617e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, false); 8717e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) { 8817e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, false); 8917e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PIN.equals(key)) { 9017e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, false); 9117e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) { 9217e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC, false); 9317e9e1933055b207473b488595b2887bfcaea32eJim Miller } else { 9417e9e1933055b207473b488595b2887bfcaea32eJim Miller handled = false; 9517e9e1933055b207473b488595b2887bfcaea32eJim Miller } 9617e9e1933055b207473b488595b2887bfcaea32eJim Miller return handled; 97bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 98bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 9917e9e1933055b207473b488595b2887bfcaea32eJim Miller @Override 10017e9e1933055b207473b488595b2887bfcaea32eJim Miller public void onActivityResult(int requestCode, int resultCode, Intent data) { 10117e9e1933055b207473b488595b2887bfcaea32eJim Miller super.onActivityResult(requestCode, resultCode, data); 10217e9e1933055b207473b488595b2887bfcaea32eJim Miller if (requestCode == CONFIRM_EXISTING_REQUEST && resultCode == Activity.RESULT_OK) { 10317e9e1933055b207473b488595b2887bfcaea32eJim Miller mPasswordConfirmed = true; 10417e9e1933055b207473b488595b2887bfcaea32eJim Miller updatePreferencesOrFinish(); 10517e9e1933055b207473b488595b2887bfcaea32eJim Miller } else { 10617e9e1933055b207473b488595b2887bfcaea32eJim Miller getActivity().setResult(Activity.RESULT_CANCELED); 10717e9e1933055b207473b488595b2887bfcaea32eJim Miller finish(); 10817e9e1933055b207473b488595b2887bfcaea32eJim Miller } 109bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 110bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 11117e9e1933055b207473b488595b2887bfcaea32eJim Miller @Override 11217e9e1933055b207473b488595b2887bfcaea32eJim Miller public void onSaveInstanceState(Bundle outState) { 11317e9e1933055b207473b488595b2887bfcaea32eJim Miller super.onSaveInstanceState(outState); 11417e9e1933055b207473b488595b2887bfcaea32eJim Miller // Saved so we don't force user to re-enter their password if configuration changes 11517e9e1933055b207473b488595b2887bfcaea32eJim Miller outState.putBoolean(PASSWORD_CONFIRMED, mPasswordConfirmed); 11617e9e1933055b207473b488595b2887bfcaea32eJim Miller } 117bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 11817e9e1933055b207473b488595b2887bfcaea32eJim Miller private void updatePreferencesOrFinish() { 11917e9e1933055b207473b488595b2887bfcaea32eJim Miller int quality = getActivity().getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1); 12017e9e1933055b207473b488595b2887bfcaea32eJim Miller if (quality == -1) { 12117e9e1933055b207473b488595b2887bfcaea32eJim Miller // If caller didn't specify password quality, show the UI and allow the user to choose. 12217e9e1933055b207473b488595b2887bfcaea32eJim Miller quality = mChooseLockSettingsHelper.utils().getKeyguardStoredPasswordQuality(); 12317e9e1933055b207473b488595b2887bfcaea32eJim Miller final PreferenceScreen prefScreen = getPreferenceScreen(); 12417e9e1933055b207473b488595b2887bfcaea32eJim Miller if (prefScreen != null) { 12517e9e1933055b207473b488595b2887bfcaea32eJim Miller prefScreen.removeAll(); 12617e9e1933055b207473b488595b2887bfcaea32eJim Miller } 12717e9e1933055b207473b488595b2887bfcaea32eJim Miller addPreferencesFromResource(R.xml.security_settings_picker); 12817e9e1933055b207473b488595b2887bfcaea32eJim Miller disableUnusablePreferences(mDPM.getPasswordQuality(null)); 12917e9e1933055b207473b488595b2887bfcaea32eJim Miller } else { 13017e9e1933055b207473b488595b2887bfcaea32eJim Miller updateUnlockMethodAndFinish(quality, false); 131bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 132abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn } 133bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 13417e9e1933055b207473b488595b2887bfcaea32eJim Miller /*** 13517e9e1933055b207473b488595b2887bfcaea32eJim Miller * Disables preferences that are less secure than required quality. 13617e9e1933055b207473b488595b2887bfcaea32eJim Miller * 13717e9e1933055b207473b488595b2887bfcaea32eJim Miller * @param quality the requested quality. 13817e9e1933055b207473b488595b2887bfcaea32eJim Miller */ 13917e9e1933055b207473b488595b2887bfcaea32eJim Miller private void disableUnusablePreferences(final int quality) { 14017e9e1933055b207473b488595b2887bfcaea32eJim Miller final Preference picker = getPreferenceScreen().findPreference("security_picker_category"); 14117e9e1933055b207473b488595b2887bfcaea32eJim Miller final PreferenceCategory cat = (PreferenceCategory) picker; 14217e9e1933055b207473b488595b2887bfcaea32eJim Miller final int preferenceCount = cat.getPreferenceCount(); 14317e9e1933055b207473b488595b2887bfcaea32eJim Miller for (int i = 0; i < preferenceCount; i++) { 14417e9e1933055b207473b488595b2887bfcaea32eJim Miller Preference pref = cat.getPreference(i); 14517e9e1933055b207473b488595b2887bfcaea32eJim Miller if (pref instanceof PreferenceScreen) { 14617e9e1933055b207473b488595b2887bfcaea32eJim Miller final String key = ((PreferenceScreen) pref).getKey(); 14717e9e1933055b207473b488595b2887bfcaea32eJim Miller boolean enabled = true; 14817e9e1933055b207473b488595b2887bfcaea32eJim Miller if (KEY_UNLOCK_SET_OFF.equals(key)) { 14917e9e1933055b207473b488595b2887bfcaea32eJim Miller enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; 15017e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_NONE.equals(key)) { 15117e9e1933055b207473b488595b2887bfcaea32eJim Miller enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; 15217e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) { 15317e9e1933055b207473b488595b2887bfcaea32eJim Miller enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; 15417e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PIN.equals(key)) { 15517e9e1933055b207473b488595b2887bfcaea32eJim Miller enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; 15617e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) { 15717e9e1933055b207473b488595b2887bfcaea32eJim Miller enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_COMPLEX; 15817e9e1933055b207473b488595b2887bfcaea32eJim Miller } 15917e9e1933055b207473b488595b2887bfcaea32eJim Miller if (!enabled) { 16017e9e1933055b207473b488595b2887bfcaea32eJim Miller pref.setSummary(R.string.unlock_set_unlock_disabled_summary); 16117e9e1933055b207473b488595b2887bfcaea32eJim Miller pref.setEnabled(false); 16217e9e1933055b207473b488595b2887bfcaea32eJim Miller } 163bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 164bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 165bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller } 166bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 16717e9e1933055b207473b488595b2887bfcaea32eJim Miller /** 16817e9e1933055b207473b488595b2887bfcaea32eJim Miller * Invokes an activity to change the user's pattern, password or PIN based on given quality 16917e9e1933055b207473b488595b2887bfcaea32eJim Miller * and minimum quality specified by DevicePolicyManager. If quality is 17017e9e1933055b207473b488595b2887bfcaea32eJim Miller * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED}, password is cleared. 17117e9e1933055b207473b488595b2887bfcaea32eJim Miller * 17217e9e1933055b207473b488595b2887bfcaea32eJim Miller * @param quality the desired quality. Ignored if DevicePolicyManager requires more security. 17317e9e1933055b207473b488595b2887bfcaea32eJim Miller * @param disabled whether or not to show LockScreen at all. Only meaningful when quality is 17417e9e1933055b207473b488595b2887bfcaea32eJim Miller * {@link DevicePolicyManager#PASSWORD_QUALITY_UNSPECIFIED} 17517e9e1933055b207473b488595b2887bfcaea32eJim Miller */ 17617e9e1933055b207473b488595b2887bfcaea32eJim Miller void updateUnlockMethodAndFinish(int quality, boolean disabled) { 17717e9e1933055b207473b488595b2887bfcaea32eJim Miller // Sanity check. We should never get here without confirming user's existing password first. 17817e9e1933055b207473b488595b2887bfcaea32eJim Miller if (!mPasswordConfirmed) { 17917e9e1933055b207473b488595b2887bfcaea32eJim Miller throw new IllegalStateException("Tried to update password without confirming first"); 18017e9e1933055b207473b488595b2887bfcaea32eJim Miller } 181bbb4afa19f75694c585506b0c091372d60e07ca7Jim Miller 18217e9e1933055b207473b488595b2887bfcaea32eJim Miller // Compare minimum allowed password quality and launch appropriate security setting method 18317e9e1933055b207473b488595b2887bfcaea32eJim Miller int minQuality = mDPM.getPasswordQuality(null); 18417e9e1933055b207473b488595b2887bfcaea32eJim Miller if (quality < minQuality) { 18517e9e1933055b207473b488595b2887bfcaea32eJim Miller quality = minQuality; 186abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn } 18717e9e1933055b207473b488595b2887bfcaea32eJim Miller if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) { 18817e9e1933055b207473b488595b2887bfcaea32eJim Miller int minLength = mDPM.getPasswordMinimumLength(null); 18917e9e1933055b207473b488595b2887bfcaea32eJim Miller if (minLength < MIN_PASSWORD_LENGTH) { 19017e9e1933055b207473b488595b2887bfcaea32eJim Miller minLength = MIN_PASSWORD_LENGTH; 19117e9e1933055b207473b488595b2887bfcaea32eJim Miller } 19217e9e1933055b207473b488595b2887bfcaea32eJim Miller final int maxLength = mDPM.getPasswordMaximumLength(quality); 19317e9e1933055b207473b488595b2887bfcaea32eJim Miller Intent intent = new Intent().setClass(getActivity(), ChooseLockPassword.class); 19417e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality); 19517e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength); 19617e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength); 19717e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra(CONFIRM_CREDENTIALS, false); 19817e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); 19917e9e1933055b207473b488595b2887bfcaea32eJim Miller startActivity(intent); 20017e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) { 20117e9e1933055b207473b488595b2887bfcaea32eJim Miller boolean showTutorial = !mChooseLockSettingsHelper.utils().isPatternEverChosen(); 20217e9e1933055b207473b488595b2887bfcaea32eJim Miller Intent intent = new Intent(); 20317e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.setClass(getActivity(), showTutorial 20417e9e1933055b207473b488595b2887bfcaea32eJim Miller ? ChooseLockPatternTutorial.class 20517e9e1933055b207473b488595b2887bfcaea32eJim Miller : ChooseLockPattern.class); 20617e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); 20717e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra("key_lock_method", "pattern"); 20817e9e1933055b207473b488595b2887bfcaea32eJim Miller intent.putExtra(CONFIRM_CREDENTIALS, false); 20917e9e1933055b207473b488595b2887bfcaea32eJim Miller startActivity(intent); 21017e9e1933055b207473b488595b2887bfcaea32eJim Miller } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { 21117e9e1933055b207473b488595b2887bfcaea32eJim Miller mChooseLockSettingsHelper.utils().clearLock(); 21217e9e1933055b207473b488595b2887bfcaea32eJim Miller mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled); 21317e9e1933055b207473b488595b2887bfcaea32eJim Miller getActivity().setResult(Activity.RESULT_OK); 21417e9e1933055b207473b488595b2887bfcaea32eJim Miller } 21517e9e1933055b207473b488595b2887bfcaea32eJim Miller finish(); 216abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn } 217abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn } 218abc3dc64cf61c9f5c28b6f2640b221d63cb86a0aDianne Hackborn} 219