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

Commit 53ccb2b2 authored by kaiyiz's avatar kaiyiz Committed by Gerrit - the friendly Code Review server
Browse files

SystemUI: Fix "Emergency call" button doesn't disappear in OOS state issue

HashMap maybe store some invalid ServiceState, shouldn't traverse the
entire HashMap to judge whether can make emergency call.

Get ServiceState according to phone corresponding subId.

Change-Id: I51d2dbbe0b74ff9cecfb94859406b3d4233d93ef
CRs-Fixed: 693739
parent fa9bddda
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.widget.LockPatternUtils;

import java.util.HashMap;
import java.util.Iterator;


/**
@@ -107,10 +106,9 @@ public class EmergencyButton extends Button {
    }

    private boolean canMakeEmergencyCall() {
        Iterator iter = mServiceState.entrySet().iterator();
        while (iter.hasNext()) {
            HashMap.Entry entry = (HashMap.Entry) iter.next();
            ServiceState state = (ServiceState) entry.getValue();
        KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext);
        for (int i = 0; i < monitor.getNumPhones(); i++) {
            ServiceState state = mServiceState.get(monitor.getSubIdByPhoneId(i));
            if ((state != null) && (state.isEmergencyOnly() ||
                    state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE)) {
                return true;
+2 −5
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ import com.google.android.collect.Lists;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

/**
@@ -1262,10 +1261,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    }

    private boolean canMakeEmergencyCall() {
        Iterator iter = mServiceState.entrySet().iterator();
        while (iter.hasNext()) {
            HashMap.Entry entry = (HashMap.Entry) iter.next();
            ServiceState state = (ServiceState) entry.getValue();
        for (int i = 0; i < getNumPhones(); i++) {
            ServiceState state = mServiceState.get(getSubIdByPhoneId(i));
            if ((state != null) && (state.isEmergencyOnly() ||
                    state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE)) {
                return true;