summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml22
-rw-r--r--src/com/android/settings/ChooseLockGeneric.java70
-rw-r--r--src/com/android/settings/ChooseLockPassword.java20
-rw-r--r--src/com/android/settings/ChooseLockPatternTutorial.java2
-rw-r--r--src/com/android/settings/SecuritySettings.java43
5 files changed, 117 insertions, 40 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cdbbc01..a2eb681 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -423,31 +423,29 @@
android:theme="@android:style/Theme.NoTitleBar">
</activity>
- <activity android:name="ChooseLockPattern" android:label="@string/lockpattern_change_lock_pattern_label">
+ <activity android:name="ChooseLockGeneric"
+ android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
- <action android:name="android.intent.action.DEFAULT" />
+ <action android:name="android.app.action.SET_NEW_PASSWORD" />
+ <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <activity android:name="ChooseLockPassword" android:label="@string/lockpattern_change_lock_pin_label"
+ <activity android:name="ChooseLockPattern"
+ android:label="@string/lockpattern_change_lock_pattern_label">
+ </activity>
+
+ <activity android:name="ChooseLockPassword"
+ android:label="@string/lockpattern_change_lock_pin_label"
android:theme="@android:style/Theme.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.DEFAULT" />
- </intent-filter>
</activity>
<activity android:name="ChooseLockPatternTutorial"
android:label="@string/lockpattern_change_lock_pattern_label">
- <intent-filter>
- <action android:name="android.intent.action.DEFAULT" />
- </intent-filter>
</activity>
<activity android:name="ChooseLockPatternExample"
android:label="@string/lockpattern_change_lock_pattern_label">
- <intent-filter>
- <action android:name="android.intent.action.DEFAULT" />
- </intent-filter>
</activity>
<activity android:name="ZoneList" android:label="@string/choose_timezone" />
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
new file mode 100644
index 0000000..a3c8d8a
--- /dev/null
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -0,0 +1,70 @@
+/*
+ * 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.DevicePolicyManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+public class ChooseLockGeneric extends Activity {
+ private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+ DevicePolicyManager mDPM;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+ mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
+
+ final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
+
+ int mode = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1);
+ if (mode == -1) {
+ mode = lockPatternUtils.getPasswordMode();
+ }
+ int minMode = mDPM.getPasswordMode();
+ if (mode < minMode) {
+ mode = minMode;
+ }
+ if (mode >= DevicePolicyManager.PASSWORD_MODE_NUMERIC) {
+ int minLength = mDPM.getMinimumPasswordLength();
+ if (minLength < 4) {
+ minLength = 4;
+ }
+ final int maxLength = 16;
+ Intent intent = new Intent().setClass(this, ChooseLockPassword.class);
+ intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mode);
+ intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
+ intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
+ startActivity(intent);
+ } else {
+ boolean showTutorial = !lockPatternUtils.isPatternEverChosen();
+ Intent intent = new Intent();
+ intent.setClass(this, showTutorial
+ ? ChooseLockPatternTutorial.class
+ : ChooseLockPattern.class);
+ intent.putExtra("key_lock_method", "pattern");
+ startActivity(intent);
+ }
+ finish();
+ }
+}
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 2d36f03..6f9cefd 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -79,15 +79,17 @@ public class ChooseLockPassword extends Activity implements OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLockPatternUtils = new LockPatternUtils(this);
- if (mLockPatternUtils.isDevicePolicyActive()) {
- mRequestedMode = mLockPatternUtils.getRequestedPasswordMode();
- mPasswordMinLength = mLockPatternUtils.getRequestedMinimumPasswordLength();
- } else {
- mRequestedMode = getIntent().getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY,
- mRequestedMode);
- mPasswordMinLength = getIntent().getIntExtra(PASSWORD_MIN_KEY, mPasswordMinLength);
+ mRequestedMode = getIntent().getIntExtra("password_mode", mRequestedMode);
+ mPasswordMinLength = getIntent().getIntExtra("password_min_length", mPasswordMinLength);
+ mPasswordMaxLength = getIntent().getIntExtra("password_max_length", mPasswordMaxLength);
+ int minMode = mLockPatternUtils.getRequestedPasswordMode();
+ if (mRequestedMode < minMode) {
+ mRequestedMode = minMode;
+ }
+ int minLength = mLockPatternUtils.getRequestedMinimumPasswordLength();
+ if (mPasswordMinLength < minLength) {
+ mPasswordMinLength = minLength;
}
- mPasswordMaxLength = getIntent().getIntExtra(PASSWORD_MAX_KEY, mPasswordMaxLength);
initViews();
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
if (savedInstanceState == null) {
@@ -188,7 +190,7 @@ public class ChooseLockPassword extends Activity implements OnClickListener {
// TODO: move these to LockPatternUtils
mLockPatternUtils.setLockPatternEnabled(false);
mLockPatternUtils.saveLockPattern(null);
- mLockPatternUtils.saveLockPassword(pin);
+ mLockPatternUtils.saveLockPassword(pin, mRequestedMode);
finish();
} else {
int msg = R.string.lockpassword_confirm_passwords_dont_match;
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index 757dc40..aa6213e 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -36,7 +36,7 @@ public class ChooseLockPatternTutorial extends Activity implements View.OnClickL
LockPatternUtils lockPatternUtils = new LockPatternUtils(this);
if (savedInstanceState == null && lockPatternUtils.isPatternEverChosen()) {
Intent intent = new Intent();
- intent.setClassName("com.android.settings", "com.android.settings.ChooseLockPattern");
+ intent.setClass(this, ChooseLockPattern.class);
startActivity(intent);
finish();
} else {
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index d4f721c..5c44f27 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -22,9 +22,11 @@ import java.util.Observer;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.DevicePolicyManager;
import android.app.Dialog;
import android.content.ContentQueryMap;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
@@ -103,6 +105,8 @@ public class SecuritySettings extends PreferenceActivity {
private CheckBoxPreference mGps;
private CheckBoxPreference mAssistedGps;
+ DevicePolicyManager mDPM;
+
// These provide support for receiving notification when Location Manager settings change.
// This is necessary because the Network Location Provider can change settings
// if the user does not confirm enabling the provider.
@@ -120,6 +124,8 @@ public class SecuritySettings extends PreferenceActivity {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.security_settings);
+ mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
+
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this);
createPreferenceHierarchy();
@@ -217,23 +223,26 @@ public class SecuritySettings extends PreferenceActivity {
}
protected void handleUpdateUnlockMethod(final String value) {
- final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
if ("none".equals(value)) {
- mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST);
- } else if ("password".equals(value) || "pin".equals(value)) {
- final int mode = "password".equals(value)
- ? LockPatternUtils.MODE_PASSWORD : LockPatternUtils.MODE_PIN;
- Intent intent = new Intent().setClassName(PACKAGE, CHOOSE_LOCK_PIN);
- intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, mode);
- intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, PASSWORD_MIN_LENGTH);
- intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, PASSWORD_MAX_LENGTH);
- startActivityForResult(intent, UPDATE_PASSWORD_REQUEST);
- } else if ("pattern".equals(value)) {
- boolean showTutorial = !lockPatternUtils.isPatternEverChosen();
+ if (mDPM.getPasswordMode() == DevicePolicyManager.PASSWORD_MODE_UNSPECIFIED) {
+ mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST);
+ }
+ } else {
+ int reqMode;
+ if ("password".equals(value)) {
+ reqMode = LockPatternUtils.MODE_PASSWORD;
+ } else if ( "pin".equals(value)) {
+ reqMode = LockPatternUtils.MODE_PIN;
+ } else {
+ reqMode = LockPatternUtils.MODE_PATTERN;
+ }
+ int minMode = mDPM.getPasswordMode();
+ if (reqMode < minMode) {
+ reqMode = minMode;
+ }
Intent intent = new Intent();
- intent.setClassName(PACKAGE, showTutorial ?
- LOCK_PATTERN_TUTORIAL : CHOOSE_LOCK_PATTERN);
- intent.putExtra("key_lock_method", value);
+ intent.setClass(this, ChooseLockGeneric.class);
+ intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, reqMode);
startActivityForResult(intent, UPDATE_PASSWORD_REQUEST);
}
}
@@ -321,9 +330,7 @@ public class SecuritySettings extends PreferenceActivity {
LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
if ((requestCode == CONFIRM_EXISTING_REQUEST) && resultOk) {
- lockPatternUtils.saveLockPassword(null);
- lockPatternUtils.setLockPatternEnabled(false);
- lockPatternUtils.saveLockPattern(null);
+ lockPatternUtils.clearLock();
}
}