summaryrefslogtreecommitdiffstats
path: root/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java')
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java60
1 files changed, 52 insertions, 8 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 5e09729..70a9f5c 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -69,6 +69,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
+import cyanogenmod.providers.CMSettings;
+
import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
@@ -381,6 +383,36 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
return mSubscriptionInfo;
}
+ public boolean isEmergencyOnly() {
+ boolean isEmerg = false;
+ ServiceState state;
+ for (int slotId = 0; slotId < TelephonyManager.getDefault().getPhoneCount(); slotId++) {
+ state = null;
+ int[] subId = mSubscriptionManager.getSubId(slotId);
+ if (subId != null && subId.length > 0) {
+ state = mServiceStates.get(subId[0]);
+ }
+ if (state != null) {
+ if (state.getVoiceRegState() == ServiceState.STATE_IN_SERVICE)
+ return false;
+ else if (state.isEmergencyOnly()) {
+ isEmerg = true;
+ }
+ }
+ }
+ return isEmerg;
+ }
+
+ public int getPresentSubId() {
+ for (int slotId = 0; slotId < TelephonyManager.getDefault().getPhoneCount(); slotId++) {
+ int[] subId = mSubscriptionManager.getSubId(slotId);
+ if (subId != null && subId.length > 0 && getSimState(subId[0]) != State.ABSENT) {
+ return subId[0];
+ }
+ }
+ return -1;
+ }
+
@Override
public void onTrustManagedChanged(boolean managed, int userId) {
mUserTrustIsManaged.put(userId, managed);
@@ -430,7 +462,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
}
- private void handleFingerprintAuthenticated() {
+
+ private void handleFingerprintAuthenticated(int authUserId) {
try {
final int userId;
try {
@@ -439,6 +472,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
Log.e(TAG, "Failed to get current user id: ", e);
return;
}
+ if (userId != authUserId) {
+ Log.d(TAG, "Fingerprint authenticated for wrong user: " + authUserId);
+ return;
+ }
if (isFingerprintDisabled(userId)) {
Log.d(TAG, "Fingerprint disabled by DPM for userId: " + userId);
return;
@@ -705,7 +742,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
@Override
public void onAuthenticationSucceeded(AuthenticationResult result) {
- handleFingerprintAuthenticated();
+ handleFingerprintAuthenticated(result.getUserId());
}
@Override
@@ -1048,9 +1085,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean shouldListenForFingerprint() {
- return (mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep)
- && !mSwitchingUser && !mFingerprintAlreadyAuthenticated
- && !isFingerprintDisabled(getCurrentUser());
+ if (!mSwitchingUser && !mFingerprintAlreadyAuthenticated
+ && !isFingerprintDisabled(getCurrentUser())) {
+ if (mContext.getResources().getBoolean(
+ com.android.keyguard.R.bool.config_fingerprintWakeAndUnlock)) {
+ return mKeyguardIsVisible || !mDeviceInteractive || mBouncer || mGoingToSleep;
+ } else {
+ return mDeviceInteractive && (mKeyguardIsVisible || mBouncer);
+ }
+ }
+ return false;
}
private void startListeningForFingerprint() {
@@ -1088,8 +1132,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean isDeviceProvisionedInSettingsDb() {
- return Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+ return CMSettings.Secure.getInt(mContext.getContentResolver(),
+ CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED, 0) != 0;
}
private void watchForDeviceProvisioning() {
@@ -1106,7 +1150,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
};
mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
+ CMSettings.Secure.getUriFor(CMSettings.Secure.CM_SETUP_WIZARD_COMPLETED),
false, mDeviceProvisionedObserver);
// prevent a race condition between where we check the flag and where we register the