/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings; import com.android.internal.widget.LockPatternUtils; import android.app.Activity; import android.app.Fragment; import android.app.admin.DevicePolicyManager; import android.content.Intent; public final class ChooseLockSettingsHelper { static final String EXTRA_KEY_PASSWORD = "password"; private LockPatternUtils mLockPatternUtils; private Activity mActivity; private Fragment mFragment; public ChooseLockSettingsHelper(Activity activity) { mActivity = activity; mLockPatternUtils = new LockPatternUtils(activity); } public ChooseLockSettingsHelper(Activity activity, Fragment fragment) { this(activity); mFragment = fragment; } public LockPatternUtils utils() { return mLockPatternUtils; } /** * If a pattern, password or PIN exists, prompt the user before allowing them to change it. * @param message optional message to display about the action about to be done * @param details optional detail message to display * @return true if one exists and we launched an activity to confirm it * @see #onActivityResult(int, int, android.content.Intent) */ boolean launchConfirmationActivity(int request, CharSequence message, CharSequence details) { boolean launched = false; switch (mLockPatternUtils.getKeyguardStoredPasswordQuality()) { case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: launched = confirmPattern(request, message, details); break; case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: // TODO: update UI layout for ConfirmPassword to show message and details launched = confirmPassword(request); break; } return launched; } /** * Launch screen to confirm the existing lock pattern. * @param message shown in header of ConfirmLockPattern if not null * @param details shown in footer of ConfirmLockPattern if not null * @see #onActivityResult(int, int, android.content.Intent) * @return true if we launched an activity to confirm pattern */ private boolean confirmPattern(int request, CharSequence message, CharSequence details) { if (!mLockPatternUtils.isLockPatternEnabled() || !mLockPatternUtils.savedPatternExists()) { return false; } final Intent intent = new Intent(); // supply header and footer text in the intent intent.putExtra(ConfirmLockPattern.HEADER_TEXT, message); intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, details); intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern"); if (mFragment != null) { mFragment.startActivityForResult(intent, request); } else { mActivity.startActivityForResult(intent, request); } return true; } /** * Launch screen to confirm the existing lock password. * @see #onActivityResult(int, int, android.content.Intent) * @return true if we launched an activity to confirm password */ private boolean confirmPassword(int request) { if (!mLockPatternUtils.isLockPasswordEnabled()) return false; final Intent intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPassword"); if (mFragment != null) { mFragment.startActivityForResult(intent, request); } else { mActivity.startActivityForResult(intent, request); } return true; } }