summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2015-07-29 20:39:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-07-29 20:39:27 +0000
commit726d47b7716807f740ceea6ea71c46b20ecb8ba7 (patch)
treec008122817db79053b4579a014d74d68049ed29b
parent47a74e7e2b45d9ec462f47f6741c381c478b4156 (diff)
parent7811d9f5095a343acd218f4bb0a0e9e8f480b401 (diff)
downloadframeworks_base-726d47b7716807f740ceea6ea71c46b20ecb8ba7.zip
frameworks_base-726d47b7716807f740ceea6ea71c46b20ecb8ba7.tar.gz
frameworks_base-726d47b7716807f740ceea6ea71c46b20ecb8ba7.tar.bz2
Merge "Fix and deprecate lock pattern related settings" into mnc-dev
-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 df72adf..7f788a5 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 319aa9f..4ef1719 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 a79970c..c5534c3 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 42794e7..5e2fe5a 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);