Fix SystemUI mapping SIM state error issue
KeyguardUpdateMonitor#SimData#simState is updated from telephony
broadcast whose action is Intent#ACTION_SIM_STATE_CHANGED,
but the sim state mapping is inconsistent with telephony design.
Below are the telephony design of broadcast extra(SIM state and reason)
mapping matrix for action Intent#ACTION_SIM_STATE_CHANGED:
1. SIM card state unknown:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_UNKNOWN
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
2. SIM absent:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_ABSENT
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
3. SIM IO error three consecutive times:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_CARD_IO_ERROR
b) Intent#EXTRA_SIM_LOCKED_REASON: Intent#SIM_STATE_CARD_IO_ERROR
4. SIM card is present but not usable due to carrier restrictions:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_CARD_RESTRICTED
b) Intent#EXTRA_SIM_LOCKED_REASON: Intent#SIM_STATE_CARD_RESTRICTED
5. SIM locked:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_LOCKED
b) Intent#EXTRA_SIM_LOCKED_REASON:
- locked on PIN1: Intent#SIM_LOCKED_ON_PIN
- locked on PUK1: Intent#SIM_LOCKED_ON_PUK
- locked on network personalization: Intent#SIM_LOCKED_NETWORK
- permanently disabled due to puk fails:
Intent#SIM_ABSENT_ON_PERM_DISABLED
6. SIM applications are not ready:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_NOT_READY
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
7. SIM IMSI is ready in property, but currently it is never broadcasted:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_IMSI
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
8. SIM all applications are ready:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_READY
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
9. SIM all ICC records, including IMSI, are loaded:
a) Intent#EXTRA_SIM_STATE: Intent#SIM_STATE_LOADED
b) Intent#EXTRA_SIM_LOCKED_REASON: always null
Based on above, this patch fixes below points:
1. Upate KeyguardUpdateMonitor#SimData#fromIntent sim state, which
follows telephony design.
2. Update CarrierTextManager#getStatusForIccState
a) network locked mapping: TelephonyManager#SIM_STATE_NETWORK_LOCKED
to CarrierTextManager#StatusMode#NetworkLocked.
b) adds missed state CarrierTextManager#StatusMode#SimRestricted.
3. Add related automated unit tests to verify code logic
Bug: 265564214
Bug: 265440217
Test: Build and manual test on device.
Test: atest CarrierTextManagerTest KeyguardUpdateMonitorTest
Change-Id: I76eff7a66f2dac6f87072501dc6654e48c105e02
Signed-off-by: Wei Huang <hwbest.v@gmail.com>
Signed-off-by: Honggang Luo <luo.loky@gmail.com>
Signed-off-by: Chao Yuan <chaoyuanx@gmail.com>
4 files changed