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