Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f74b493e authored by Meng Wang's avatar Meng Wang
Browse files

Supress SIM_STATE_UNKNOWN when not PERSOSUBSTATE_SIM_NETWORK

During APPSTATE_SUBSCRIPTION_PERSO, we don't know if SIM locked or not
before PERSOSUBSTATE_SIM_NETWORK. Setting SIM state UNKNOWN on
APPSTATE_SUBSCRIPTION_PERSO with other substate introduces uncessary SIM
state transition. It's OK to just keep the last SIM state (NOT_READY,for
example, the initial state during phone bootup).

Also fixed import.

Bug: 37240275
Test: make
Test: unlocked Verizon SIM bootup state sequence is: NOT_READY -> READY
      -> IMSI -> LOADED. UNKNOWN is gone.
Change-Id: I89d479a51c81fe25713f3694f640e2eead1888cd
(cherry-pick of https://android-review.googlesource.com/#/c/369890/)
parent 1a4f9e5f
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.internal.telephony.uicc;

import static android.Manifest.permission.READ_PHONE_STATE;

import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
@@ -26,7 +24,6 @@ import android.os.Handler;
import android.os.Message;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.telephony.Rlog;
import android.telephony.ServiceState;
@@ -37,14 +34,13 @@ import android.text.TextUtils;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.telephony.MccTable;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
import com.android.internal.telephony.uicc.IccCardStatus.CardState;
@@ -420,9 +416,8 @@ public class IccCardProxy extends Handler implements IccCard {
                if (mUiccApplication.getPersoSubState() ==
                        PersoSubState.PERSOSUBSTATE_SIM_NETWORK) {
                    setExternalState(State.NETWORK_LOCKED);
                } else {
                    setExternalState(State.UNKNOWN);
                }
                // Otherwise don't change external SIM state.
                break;
            case APPSTATE_READY:
                setExternalState(State.READY);