From 3e7c7ca8e4faed7d0377258ec1fdd43e07083316 Mon Sep 17 00:00:00 2001 From: richard chou Date: Thu, 12 Apr 2018 14:25:16 +0800 Subject: [PATCH] Reset SIM state if the subscription/slot is no longer active. Reset the cached SIM state if the subscription and associated slot is not active. Bug: 77702165 Bug: 75499020 Test: Nova team An-Cheng verified it manually. Change-Id: Ic5adfbe637d29bd7e12e277e9d89d4ad56350adf --- .../src/com/android/keyguard/KeyguardUpdateMonitor.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 1bab36be8cd83..c826aaaac7490 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -1850,6 +1850,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { final TelephonyManager tele = TelephonyManager.from(mContext); ArrayList changedSubscriptionIds = new ArrayList<>(); HashSet activeSubIds = new HashSet<>(); + HashSet activeSlotIds = new HashSet<>(); for (SubscriptionInfo info : activeSubscriptionInfos) { int subId = info.getSubscriptionId(); @@ -1878,11 +1879,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } activeSubIds.add(subId); + activeSlotIds.add(slotId); } for (SimData data : mSimDatas.values()) { - if (!activeSubIds.contains(data.subId) && data.simState != State.ABSENT) { + if (!activeSubIds.contains(data.subId) + && !activeSlotIds.contains(data.slotId) + && data.simState != State.ABSENT) { // for the inactive subscriptions, reset state to ABSENT + if (DEBUG_SIM_STATES) Log.d(TAG, "reset state to ABSENT for subId:" + data.subId); data.simState = State.ABSENT; changedSubscriptionIds.add(data.subId); }