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

Commit 8663deec authored by SongFerng Wang's avatar SongFerng Wang Committed by Automerger Merge Worker
Browse files

Using ACTION_SIM_CARD_STATE_CHANGED to detect simSlotMapping is complete am: e51d8515

parents b3f7a40d e51d8515
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -58,22 +58,29 @@ public class UiccSlotUtil {
    public static final int INVALID_PORT_ID = -1;

    @VisibleForTesting
    static class SimSlotChangeReceiver extends BroadcastReceiver{
    static class SimCardStateChangeReceiver extends BroadcastReceiver{
        private final CountDownLatch mLatch;
        SimSlotChangeReceiver(CountDownLatch latch) {
        SimCardStateChangeReceiver(CountDownLatch latch) {
            mLatch = latch;
        }

        public void registerOn(Context context) {
            context.registerReceiver(this,
                    new IntentFilter(TelephonyManager.ACTION_SIM_SLOT_STATUS_CHANGED),
                    Context.RECEIVER_EXPORTED/*UNAUDITED*/);
                    new IntentFilter(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED),
                    Context.RECEIVER_NOT_EXPORTED);
        }

        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i(TAG, "Action: " + intent.getAction());
            if (TelephonyManager.ACTION_SIM_SLOT_STATUS_CHANGED.equals(intent.getAction())) {
            if (!TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED.equals(intent.getAction())) {
                return;
            }
            final int simState = intent.getIntExtra(
                    TelephonyManager.EXTRA_SIM_STATE, TelephonyManager.SIM_STATE_UNKNOWN);
            Log.i(TAG, "simState: " + simState);
            if (simState != TelephonyManager.SIM_STATE_UNKNOWN
                    && simState != TelephonyManager.SIM_STATE_ABSENT) {
                mLatch.countDown();
            }
        }
@@ -269,8 +276,8 @@ public class UiccSlotUtil {
        try {
            CountDownLatch latch = new CountDownLatch(1);
            if (isMultipleEnabledProfilesSupported(telMgr)) {
                receiver = new SimSlotChangeReceiver(latch);
                ((SimSlotChangeReceiver) receiver).registerOn(context);
                receiver = new SimCardStateChangeReceiver(latch);
                ((SimCardStateChangeReceiver) receiver).registerOn(context);
            } else {
                receiver = new CarrierConfigChangedReceiver(latch);
                ((CarrierConfigChangedReceiver) receiver).registerOn(context);
+6 −3
Original line number Diff line number Diff line
@@ -752,11 +752,14 @@ public class UiccSlotUtilTest {
    }

    @Test
    public void onReceiveSimSlotChangeReceiver_receiveAction_timerCountDown() {
    public void onReceiveSimCardStateChangeReceiver_receiveAction_timerCountDown() {
        CountDownLatch latch = spy(new CountDownLatch(1));
        UiccSlotUtil.SimSlotChangeReceiver receive = new UiccSlotUtil.SimSlotChangeReceiver(latch);
        UiccSlotUtil.SimCardStateChangeReceiver receive =
                new UiccSlotUtil.SimCardStateChangeReceiver(latch);
        Intent intent = new Intent(TelephonyManager.ACTION_SIM_SLOT_STATUS_CHANGED);
        intent.putExtra(TelephonyManager.EXTRA_SIM_STATE, TelephonyManager.SIM_STATE_PRESENT);

        receive.onReceive(mContext, new Intent(TelephonyManager.ACTION_SIM_SLOT_STATUS_CHANGED));
        receive.onReceive(mContext, intent);

        verify(latch).countDown();
    }