diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 6b6351f9b9092..f88f99bfd3cea 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -672,6 +672,7 @@ class StorageManagerService extends IStorageManager.Stub private static final int H_COMPLETE_UNLOCK_USER = 14; private static final int H_VOLUME_STATE_CHANGED = 15; private static final int H_CLOUD_MEDIA_PROVIDER_CHANGED = 16; + private static final int H_SECURE_KEYGUARD_STATE_CHANGED = 17; class StorageManagerServiceHandler extends Handler { public StorageManagerServiceHandler(Looper looper) { @@ -819,6 +820,14 @@ class StorageManagerService extends IStorageManager.Stub } break; } + case H_SECURE_KEYGUARD_STATE_CHANGED: { + try { + mVold.onSecureKeyguardStateChanged((boolean) msg.obj); + } catch (Exception e) { + Slog.wtf(TAG, e); + } + break; + } } } } @@ -1242,12 +1251,12 @@ class StorageManagerService extends IStorageManager.Stub public void onKeyguardStateChanged(boolean isShowing) { // Push down current secure keyguard status so that we ignore malicious // USB devices while locked. - mSecureKeyguardShowing = isShowing + boolean isSecureKeyguardShowing = isShowing && mContext.getSystemService(KeyguardManager.class).isDeviceSecure(mCurrentUserId); - try { - mVold.onSecureKeyguardStateChanged(mSecureKeyguardShowing); - } catch (Exception e) { - Slog.wtf(TAG, e); + if (mSecureKeyguardShowing != isSecureKeyguardShowing) { + mSecureKeyguardShowing = isSecureKeyguardShowing; + mHandler.obtainMessage(H_SECURE_KEYGUARD_STATE_CHANGED, mSecureKeyguardShowing) + .sendToTarget(); } }