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

Commit e05ede20 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Fix bug that phone crashes when switching data.

Listen to onCapabilitiesChanged instead of onAvailable, to make sure
NetworkCapabilities are well loaded before checking it.

Bug: 138684382
Test: manual
Change-Id: I48eb4966f4a605be2d18c0015bedb2578e4094a4
Merged-In: I48eb4966f4a605be2d18c0015bedb2578e4094a4
parent cd25d3a0
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -258,11 +258,12 @@ public class PhoneSwitcher extends Handler {
        public int mExpectedSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        public int mSwitchReason = TelephonyEvent.DataSwitch.Reason.DATA_SWITCH_REASON_UNKNOWN;
        @Override
        public void onAvailable(Network network) {
            NetworkCapabilities nc = mConnectivityManager.getNetworkCapabilities(network);
            if (nc.hasTransport(TRANSPORT_CELLULAR)
        public void onCapabilitiesChanged(Network network,
                NetworkCapabilities networkCapabilities) {
            if (networkCapabilities.hasTransport(TRANSPORT_CELLULAR)
                    && SubscriptionManager.isValidSubscriptionId(mExpectedSubId)
                    && mExpectedSubId == getSubIdFromNetworkSpecifier(nc.getNetworkSpecifier())) {
                    && mExpectedSubId == getSubIdFromNetworkSpecifier(
                            networkCapabilities.getNetworkSpecifier())) {
                logDataSwitchEvent(
                        mExpectedSubId,
                        TelephonyEvent.EventState.EVENT_STATE_END,
@@ -1275,6 +1276,7 @@ public class PhoneSwitcher extends Handler {
    }

    private void logDataSwitchEvent(int subId, int state, int reason) {
        log("logDataSwitchEvent subId " + subId + " state " + state + " reason " + reason);
        DataSwitch dataSwitch = new DataSwitch();
        dataSwitch.state = state;
        dataSwitch.reason = reason;