• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings;
18 
19 import com.android.internal.widget.LockPatternUtils;
20 
21 import android.app.Activity;
22 import android.app.Fragment;
23 import android.app.admin.DevicePolicyManager;
24 import android.content.Intent;
25 
26 public final class ChooseLockSettingsHelper {
27 
28     static final String EXTRA_KEY_PASSWORD = "password";
29 
30     private LockPatternUtils mLockPatternUtils;
31     private Activity mActivity;
32     private Fragment mFragment;
33 
ChooseLockSettingsHelper(Activity activity)34     public ChooseLockSettingsHelper(Activity activity) {
35         mActivity = activity;
36         mLockPatternUtils = new LockPatternUtils(activity);
37     }
38 
ChooseLockSettingsHelper(Activity activity, Fragment fragment)39     public ChooseLockSettingsHelper(Activity activity, Fragment fragment) {
40         this(activity);
41         mFragment = fragment;
42     }
43 
utils()44     public LockPatternUtils utils() {
45         return mLockPatternUtils;
46     }
47 
48     /**
49      * If a pattern, password or PIN exists, prompt the user before allowing them to change it.
50      * @param message optional message to display about the action about to be done
51      * @param details optional detail message to display
52      * @return true if one exists and we launched an activity to confirm it
53      * @see #onActivityResult(int, int, android.content.Intent)
54      */
launchConfirmationActivity(int request, CharSequence message, CharSequence details)55     boolean launchConfirmationActivity(int request, CharSequence message, CharSequence details) {
56         boolean launched = false;
57         switch (mLockPatternUtils.getKeyguardStoredPasswordQuality()) {
58             case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
59                 launched = confirmPattern(request, message, details);
60                 break;
61             case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
62             case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
63             case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
64             case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
65                 // TODO: update UI layout for ConfirmPassword to show message and details
66                 launched = confirmPassword(request);
67                 break;
68         }
69         return launched;
70     }
71 
72     /**
73      * Launch screen to confirm the existing lock pattern.
74      * @param message shown in header of ConfirmLockPattern if not null
75      * @param details shown in footer of ConfirmLockPattern if not null
76      * @see #onActivityResult(int, int, android.content.Intent)
77      * @return true if we launched an activity to confirm pattern
78      */
confirmPattern(int request, CharSequence message, CharSequence details)79     private boolean confirmPattern(int request, CharSequence message, CharSequence details) {
80         if (!mLockPatternUtils.isLockPatternEnabled() || !mLockPatternUtils.savedPatternExists()) {
81             return false;
82         }
83         final Intent intent = new Intent();
84         // supply header and footer text in the intent
85         intent.putExtra(ConfirmLockPattern.HEADER_TEXT, message);
86         intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, details);
87         intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern");
88         if (mFragment != null) {
89             mFragment.startActivityForResult(intent, request);
90         } else {
91             mActivity.startActivityForResult(intent, request);
92         }
93         return true;
94     }
95 
96     /**
97      * Launch screen to confirm the existing lock password.
98      * @see #onActivityResult(int, int, android.content.Intent)
99      * @return true if we launched an activity to confirm password
100      */
confirmPassword(int request)101     private boolean confirmPassword(int request) {
102         if (!mLockPatternUtils.isLockPasswordEnabled()) return false;
103         final Intent intent = new Intent();
104         intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPassword");
105         if (mFragment != null) {
106             mFragment.startActivityForResult(intent, request);
107         } else {
108             mActivity.startActivityForResult(intent, request);
109         }
110         return true;
111     }
112 
113 
114 }
115