diff options
3 files changed, 23 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index 57997d8efd6f..1a325d3586f4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -233,6 +233,13 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mSecurityViewFlipperController.reloadColors(); } }; + private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = + new KeyguardUpdateMonitorCallback() { + @Override + public void onDevicePolicyManagerStateChanged() { + showPrimarySecurityScreen(false); + } + }; private KeyguardSecurityContainerController(KeyguardSecurityContainer view, AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory, @@ -279,6 +286,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard @Override protected void onViewAttached() { + mUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback); mView.setSwipeListener(mSwipeListener); mView.addMotionEventListener(mGlobalTouchListener); mConfigurationController.addCallback(mConfigurationListener); @@ -286,6 +294,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard @Override protected void onViewDetached() { + mUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback); mConfigurationController.removeCallback(mConfigurationListener); mView.removeMotionEventListener(mGlobalTouchListener); } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 74a88bd5f19a..d2a0eb3ce450 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -2717,12 +2717,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } /** - * Handle {@link #MSG_DPM_STATE_CHANGED} + * Handle {@link #MSG_DPM_STATE_CHANGED} which can change primary authentication methods to + * pin/pattern/password/none. */ private void handleDevicePolicyManagerStateChanged(int userId) { Assert.isMainThread(); updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE); updateSecondaryLockscreenRequirement(userId); + + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onDevicePolicyManagerStateChanged(); + } + } } /** diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index ad2053cbc31b..9373ea8f459c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -300,6 +300,11 @@ public class KeyguardUpdateMonitorCallback { public void onSecondaryLockscreenRequirementChanged(int userId) { } /** + * Called when device policy manager state changes. + */ + public void onDevicePolicyManagerStateChanged() { } + + /** * Called when notifying user to unlock in order to use NFC. */ public void onRequireUnlockForNfc() { } |