summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2015-07-27 15:10:13 -0700
committer Adrian Roos <roosa@google.com> 2015-07-27 19:59:27 -0700
commit7811d9f5095a343acd218f4bb0a0e9e8f480b401 (patch)
tree194dbd8bb5d2af7183385088e25949b480c7cb75
parent661794307a792690d7608dc81b4e1299937a8f67 (diff)
Fix and deprecate lock pattern related settings
Bug: 22557690 Change-Id: Ib4b3ef7cebe815ba9d9d2284f945a9ec746b216c
-rw-r--r--api/current.txt2
-rw-r--r--api/system-current.txt2
-rw-r--r--core/java/android/provider/Settings.java33
-rw-r--r--services/core/java/com/android/server/LockSettingsService.java7
4 files changed, 36 insertions, 8 deletions
diff --git a/api/current.txt b/api/current.txt
index 7c5115fc6eb3..4f296dc4a588 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -26571,7 +26571,7 @@ package android.provider {
field public static final deprecated java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
field public static final deprecated java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
field public static final deprecated java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
- field public static final java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+ field public static final deprecated java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
field public static final deprecated java.lang.String LOGGING_ID = "logging_id";
field public static final deprecated java.lang.String NETWORK_PREFERENCE = "network_preference";
field public static final java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
diff --git a/api/system-current.txt b/api/system-current.txt
index a08a0114c5eb..e07ef38cf2d6 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -28631,7 +28631,7 @@ package android.provider {
field public static final deprecated java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed";
field public static final deprecated java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
field public static final deprecated java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled";
- field public static final java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
+ field public static final deprecated java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
field public static final deprecated java.lang.String LOGGING_ID = "logging_id";
field public static final deprecated java.lang.String NETWORK_PREFERENCE = "network_preference";
field public static final java.lang.String PARENTAL_CONTROL_ENABLED = "parental_control_enabled";
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index a79970c0e9c4..c5534c32c9cd 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -19,6 +19,8 @@ package android.provider;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
+import android.app.ActivityThread;
+import android.app.Application;
import android.app.SearchManager;
import android.app.WallpaperManager;
import android.content.ComponentName;
@@ -3839,10 +3841,24 @@ public final class Settings {
}
}
if (sLockSettings != null && !sIsSystemProcess) {
- try {
- return sLockSettings.getString(name, "0", userHandle);
- } catch (RemoteException re) {
- // Fall through
+ // No context; use the ActivityThread's context as an approximation for
+ // determining the target API level.
+ Application application = ActivityThread.currentApplication();
+
+ boolean isPreMnc = application != null
+ && application.getApplicationInfo() != null
+ && application.getApplicationInfo().targetSdkVersion
+ <= VERSION_CODES.LOLLIPOP_MR1;
+ if (isPreMnc) {
+ try {
+ return sLockSettings.getString(name, "0", userHandle);
+ } catch (RemoteException re) {
+ // Fall through
+ }
+ } else {
+ throw new SecurityException("Settings.Secure." + name
+ + " is deprecated and no longer accessible."
+ + " See API documentation for potential replacements.");
}
}
}
@@ -4378,14 +4394,19 @@ public final class Settings {
* Whether autolock is enabled (0 = false, 1 = true)
*
* @deprecated Use {@link android.app.KeyguardManager} to determine the state and security
- * level of the keyguard.
+ * level of the keyguard. Accessing this setting from an app that is targeting
+ * {@link VERSION_CODES#MNC} or later throws a {@code SecurityException}.
*/
@Deprecated
public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock";
/**
* Whether lock pattern is visible as user enters (0 = false, 1 = true)
+ *
+ * @deprecated Accessing this setting from an app that is targeting
+ * {@link VERSION_CODES#MNC} or later throws a {@code SecurityException}.
*/
+ @Deprecated
public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern";
/**
@@ -4395,6 +4416,8 @@ public final class Settings {
* @deprecated Starting in {@link VERSION_CODES#JELLY_BEAN_MR1} the
* lockscreen uses
* {@link Settings.System#HAPTIC_FEEDBACK_ENABLED}.
+ * Accessing this setting from an app that is targeting
+ * {@link VERSION_CODES#MNC} or later throws a {@code SecurityException}.
*/
@Deprecated
public static final String
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index 42794e721672..5e2fe5a7c431 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -335,7 +335,12 @@ public class LockSettingsService extends ILockSettings.Stub {
public String getStringUnchecked(String key, String defaultValue, int userId) {
if (Settings.Secure.LOCK_PATTERN_ENABLED.equals(key)) {
- return mLockPatternUtils.isLockPatternEnabled(userId) ? "1" : "0";
+ long ident = Binder.clearCallingIdentity();
+ try {
+ return mLockPatternUtils.isLockPatternEnabled(userId) ? "1" : "0";
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
return mStorage.readKeyValue(key, defaultValue, userId);