summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xpackages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 2152ede6..36eac87 100755
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -26,11 +26,13 @@ import android.app.StatusBarManager;
import android.app.admin.DevicePolicyManager;
import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.database.ContentObserver;
import android.media.AudioManager;
@@ -151,6 +153,9 @@ public class KeyguardViewMediator extends SystemUI {
"com.android.internal.action.KEYGUARD_SERVICE_STATE_CHANGED";
private static final String KEYGUARD_SERVICE_EXTRA_ACTIVE = "active";
+ private static final String SETTINGS_PACKAGE = "com.android.settings";
+ private static final String CRYPT_KEEPER_ACTIVITY = SETTINGS_PACKAGE + ".CryptKeeper";
+
// used for handler messages
private static final int SHOW = 2;
private static final int HIDE = 3;
@@ -343,6 +348,8 @@ public class KeyguardViewMediator extends SystemUI {
*/
private boolean mPendingLock;
+ private int mCyrptKeeperEnabledState = -1;
+
private boolean mWakeAndUnlocking;
private IKeyguardDrawnCallback mDrawnCallback;
@@ -921,6 +928,16 @@ public class KeyguardViewMediator extends SystemUI {
return false;
}
+ private boolean isCryptKeeperEnabled() {
+ if (mCyrptKeeperEnabledState == -1) {
+ PackageManager pm = mContext.getPackageManager();
+ mCyrptKeeperEnabledState = pm.getComponentEnabledSetting(
+ new ComponentName(SETTINGS_PACKAGE, CRYPT_KEEPER_ACTIVITY));
+ }
+
+ return mCyrptKeeperEnabledState != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+ }
+
/**
* A dream started. We should lock after the usual screen-off lock timeout but only
* if there is a secure lock pattern.
@@ -1187,6 +1204,14 @@ public class KeyguardViewMediator extends SystemUI {
return;
}
+ // Ugly hack to ensure keyguard is not shown on top of the CryptKeeper which prevents
+ // a user from being able to decrypt their device.
+ if (isCryptKeeperEnabled()) {
+ if (DEBUG) Log.d(TAG, "doKeyguard: not showing because CryptKeeper is enabled");
+ resetStateLocked();
+ return;
+ }
+
// if the setup wizard hasn't run yet, don't show
final boolean requireSim = !SystemProperties.getBoolean("keyguard.no_require_sim", false);
final boolean absent = SubscriptionManager.isValidSubscriptionId(