diff options
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index ec8745aa7371..5d2fce45e03d 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -732,6 +732,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) { @@ -871,6 +872,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; + } } } } @@ -1330,12 +1339,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(); } } |