Keyguard: Don't show when booting to cryptkeeper
Fixes an issue where the keyguard would show if we booted to cryptkeeper and a SIM PIN is set. Note that this only happens when the telephony stack gets enabled, which in cryptkeeper mode is usually only after an emergency call. Change-Id: I5e5f104189a9d33c356edc181e92409bb63b59d7 Fixes: 64197124 Test: Enter cryptkeeper, make emergency call, verify SIM lock screen does not show.
This commit is contained in:
@@ -38,6 +38,7 @@ import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.IPackageManager;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.database.ContentObserver;
|
||||
@@ -52,6 +53,7 @@ import android.os.Handler;
|
||||
import android.os.IRemoteCallback;
|
||||
import android.os.Message;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.Trace;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
@@ -157,6 +159,21 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
private static final ComponentName FALLBACK_HOME_COMPONENT = new ComponentName(
|
||||
"com.android.settings", "com.android.settings.FallbackHome");
|
||||
|
||||
|
||||
/**
|
||||
* If true, the system is in the half-boot-to-decryption-screen state.
|
||||
* Prudently disable lockscreen.
|
||||
*/
|
||||
public static final boolean CORE_APPS_ONLY;
|
||||
static {
|
||||
try {
|
||||
CORE_APPS_ONLY = IPackageManager.Stub.asInterface(
|
||||
ServiceManager.getService("package")).isOnlyCoreApps();
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
private static KeyguardUpdateMonitor sInstance;
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
@@ -1228,6 +1228,12 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
* Enable the keyguard if the settings are appropriate.
|
||||
*/
|
||||
private void doKeyguardLocked(Bundle options) {
|
||||
if (KeyguardUpdateMonitor.CORE_APPS_ONLY) {
|
||||
// Don't show keyguard during half-booted cryptkeeper stage.
|
||||
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because booting to cryptkeeper");
|
||||
return;
|
||||
}
|
||||
|
||||
// if another app is disabling us, don't show
|
||||
if (!mExternallyEnabled) {
|
||||
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");
|
||||
|
||||
Reference in New Issue
Block a user