diff options
-rw-r--r-- | api/current.xml | 39 | ||||
-rw-r--r-- | core/java/android/provider/Settings.java | 34 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/LockPatternUtils.java | 38 | ||||
-rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java | 84 |
4 files changed, 134 insertions, 61 deletions
diff --git a/api/current.xml b/api/current.xml index 2e434af..ba28d14 100644 --- a/api/current.xml +++ b/api/current.xml @@ -135548,6 +135548,39 @@ visibility="public" > </field> +<field name="LOCK_PATTERN_ENABLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""lock_pattern_autolock"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" + type="java.lang.String" + transient="false" + volatile="false" + value=""lock_pattern_tactile_feedback_enabled"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="LOCK_PATTERN_VISIBLE" + type="java.lang.String" + transient="false" + volatile="false" + value=""lock_pattern_visible_pattern"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> <field name="LOGGING_ID" type="java.lang.String" transient="false" @@ -136525,7 +136558,7 @@ value=""lock_pattern_autolock"" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -136536,7 +136569,7 @@ value=""lock_pattern_tactile_feedback_enabled"" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> @@ -136547,7 +136580,7 @@ value=""lock_pattern_visible_pattern"" static="true" final="true" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > </field> diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 726f98a..fdde591 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -679,6 +679,9 @@ public final class Settings { MOVED_TO_SECURE.add(Secure.HTTP_PROXY); MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS); MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED); + MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_ENABLED); + MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_VISIBLE); + MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); MOVED_TO_SECURE.add(Secure.LOGGING_ID); MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_ENABLED); MOVED_TO_SECURE.add(Secure.PARENTAL_CONTROL_LAST_UPDATE); @@ -1160,18 +1163,25 @@ public final class Settings { "bluetooth_discoverability_timeout"; /** - * Whether autolock is enabled (0 = false, 1 = true) + * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_ENABLED} + * instead */ - public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; + @Deprecated + public static final String LOCK_PATTERN_ENABLED = Secure.LOCK_PATTERN_ENABLED; /** - * Whether lock pattern is visible as user enters (0 = false, 1 = true) + * @deprecated Use {@link android.provider.Settings.Secure#LOCK_PATTERN_VISIBLE} + * instead */ + @Deprecated public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; /** - * Whether lock pattern will vibrate as user enters (0 = false, 1 = true) + * @deprecated Use + * {@link android.provider.Settings.Secure#LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED} + * instead */ + @Deprecated public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled"; @@ -2297,6 +2307,22 @@ public final class Settings { public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; /** + * Whether autolock is enabled (0 = false, 1 = true) + */ + public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; + + /** + * Whether lock pattern is visible as user enters (0 = false, 1 = true) + */ + public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; + + /** + * Whether lock pattern will vibrate as user enters (0 = false, 1 = true) + */ + public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = + "lock_pattern_tactile_feedback_enabled"; + + /** * Whether assisted GPS should be enabled or not. * @hide */ diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index d6b0808..e8ba103 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -550,7 +550,7 @@ public class LockPatternUtils { * @return Whether the lock pattern is enabled. */ public boolean isLockPatternEnabled() { - return getBoolean(Settings.System.LOCK_PATTERN_ENABLED) + return getBoolean(Settings.Secure.LOCK_PATTERN_ENABLED) && getLong(PASSWORD_TYPE_KEY, MODE_PATTERN) == MODE_PATTERN; } @@ -558,35 +558,35 @@ public class LockPatternUtils { * Set whether the lock pattern is enabled. */ public void setLockPatternEnabled(boolean enabled) { - setBoolean(Settings.System.LOCK_PATTERN_ENABLED, enabled); + setBoolean(Settings.Secure.LOCK_PATTERN_ENABLED, enabled); } /** * @return Whether the visible pattern is enabled. */ public boolean isVisiblePatternEnabled() { - return getBoolean(Settings.System.LOCK_PATTERN_VISIBLE); + return getBoolean(Settings.Secure.LOCK_PATTERN_VISIBLE); } /** * Set whether the visible pattern is enabled. */ public void setVisiblePatternEnabled(boolean enabled) { - setBoolean(Settings.System.LOCK_PATTERN_VISIBLE, enabled); + setBoolean(Settings.Secure.LOCK_PATTERN_VISIBLE, enabled); } /** * @return Whether tactile feedback for the pattern is enabled. */ public boolean isTactileFeedbackEnabled() { - return getBoolean(Settings.System.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); + return getBoolean(Settings.Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); } /** * Set whether tactile feedback for the pattern is enabled. */ public void setTactileFeedbackEnabled(boolean enabled) { - setBoolean(Settings.System.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, enabled); + setBoolean(Settings.Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, enabled); } /** @@ -648,30 +648,22 @@ public class LockPatternUtils { return nextAlarm; } - private boolean getBoolean(String systemSettingKey) { - // STOPSHIP: these need to be moved to secure settings! + private boolean getBoolean(String secureSettingKey) { return 1 == - android.provider.Settings.System.getInt( - mContentResolver, - systemSettingKey, 0); + android.provider.Settings.Secure.getInt(mContentResolver, secureSettingKey, 0); } - private void setBoolean(String systemSettingKey, boolean enabled) { - // STOPSHIP: these need to be moved to secure settings! - android.provider.Settings.System.putInt( - mContentResolver, - systemSettingKey, - enabled ? 1 : 0); + private void setBoolean(String secureSettingKey, boolean enabled) { + android.provider.Settings.Secure.putInt(mContentResolver, secureSettingKey, + enabled ? 1 : 0); } - private long getLong(String systemSettingKey, long def) { - // STOPSHIP: these need to be moved to secure settings! - return android.provider.Settings.System.getLong(mContentResolver, systemSettingKey, def); + private long getLong(String secureSettingKey, long def) { + return android.provider.Settings.Secure.getLong(mContentResolver, secureSettingKey, def); } - private void setLong(String systemSettingKey, long value) { - // STOPSHIP: these need to be moved to secure settings! - android.provider.Settings.System.putLong(mContentResolver, systemSettingKey, value); + private void setLong(String secureSettingKey, long value) { + android.provider.Settings.Secure.putLong(mContentResolver, secureSettingKey, value); } public boolean isSecure() { diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index 18e247e..bccf7d2 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -38,6 +38,7 @@ import android.net.ConnectivityManager; import android.os.Environment; import android.os.SystemProperties; import android.provider.Settings; +import android.provider.Settings.Secure; import android.speech.RecognitionService; import android.speech.RecognizerIntent; import android.text.TextUtils; @@ -76,7 +77,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' // is properly propagated through your change. Not doing so will result in a loss of user // settings. - private static final int DATABASE_VERSION = 51; + private static final int DATABASE_VERSION = 52; private Context mContext; @@ -232,18 +233,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { } if (upgradeVersion == 27) { - // Copy settings values from 'system' to 'secure' and delete them from 'system' - SQLiteStatement insertStmt = null; - SQLiteStatement deleteStmt = null; - - db.beginTransaction(); - try { - insertStmt = - db.compileStatement("INSERT INTO secure (name,value) SELECT name,value FROM " - + "system WHERE name=?"); - deleteStmt = db.compileStatement("DELETE FROM system WHERE name=?"); - - String[] settingsToMove = { + String[] settingsToMove = { Settings.Secure.ADB_ENABLED, Settings.Secure.ANDROID_ID, Settings.Secure.BLUETOOTH_ON, @@ -276,24 +266,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { Settings.Secure.WIFI_WATCHDOG_PING_DELAY_MS, Settings.Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS, }; - - for (String setting : settingsToMove) { - insertStmt.bindString(1, setting); - insertStmt.execute(); - - deleteStmt.bindString(1, setting); - deleteStmt.execute(); - } - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - if (insertStmt != null) { - insertStmt.close(); - } - if (deleteStmt != null) { - deleteStmt.close(); - } - } + moveFromSystemToSecure(db, settingsToMove); upgradeVersion = 28; } @@ -661,6 +634,23 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 51; } + if (upgradeVersion == 51) { + /* Move the lockscreen related settings to Secure, including some private ones. */ + String[] settingsToMove = { + Secure.LOCK_PATTERN_ENABLED, + Secure.LOCK_PATTERN_VISIBLE, + Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, + "lockscreen.password_type", + "lockscreen.lockoutattemptdeadline", + "lockscreen.patterneverchosen", + "lock_pattern_autolock", + "lockscreen.lockedoutpermanently", + "lockscreen.password_salt" + }; + moveFromSystemToSecure(db, settingsToMove); + upgradeVersion = 52; + } + if (upgradeVersion != currentVersion) { Log.w(TAG, "Got stuck trying to upgrade from version " + upgradeVersion + ", must wipe the settings provider"); @@ -684,6 +674,38 @@ public class DatabaseHelper extends SQLiteOpenHelper { } } + private void moveFromSystemToSecure(SQLiteDatabase db, String [] settingsToMove) { + // Copy settings values from 'system' to 'secure' and delete them from 'system' + SQLiteStatement insertStmt = null; + SQLiteStatement deleteStmt = null; + + db.beginTransaction(); + try { + insertStmt = + db.compileStatement("INSERT INTO secure (name,value) SELECT name,value FROM " + + "system WHERE name=?"); + deleteStmt = db.compileStatement("DELETE FROM system WHERE name=?"); + + + for (String setting : settingsToMove) { + insertStmt.bindString(1, setting); + insertStmt.execute(); + + deleteStmt.bindString(1, setting); + deleteStmt.execute(); + } + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + if (insertStmt != null) { + insertStmt.close(); + } + if (deleteStmt != null) { + deleteStmt.close(); + } + } + } + private void upgradeLockPatternLocation(SQLiteDatabase db) { Cursor c = db.query("system", new String[] {"_id", "value"}, "name='lock_pattern'", null, null, null, null); |