summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2015-07-29 21:22:39 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2015-07-29 21:22:39 +0000
commitaeda904f55e43b37b0783f4ef2d1a183e3d778db (patch)
treeb8746426f2c89eb5fc11cf4c63ccaa16d1eefa7f
parentd02e90f2c3917a983ed7f543efa30c05a34ee3ea (diff)
parent4371922d13794726d5fb6917b6db07c13e6d7ae2 (diff)
am 4371922d: am 8e9b33f8: am 726d47b7: Merge "Fix and deprecate lock pattern related settings" into mnc-dev
* commit '4371922d13794726d5fb6917b6db07c13e6d7ae2': Fix and deprecate lock pattern related settings
-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 df72adf7344b..7f788a58a3ed 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -26576,7 +26576,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 319aa9fdf507..4ef17198bcba 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -28636,7 +28636,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);