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

Commit ab489de7 authored by Sanket Padawe's avatar Sanket Padawe Committed by Robert Greenwalt
Browse files

DO NOT MERGE - Disable data sim selection when phone call is going on.

Bug: 19301456
Bug: 19150497
Change-Id: I00109b7648af670eb041b3ef734c67454ce22dc3
parent dd796e81
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.provider.SearchIndexableResource;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -51,6 +52,8 @@ import com.android.settings.Utils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.R;
import android.os.SystemProperties;
import com.android.internal.telephony.TelephonyProperties;

import java.util.ArrayList;
import java.util.List;
@@ -245,10 +248,38 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
        // FIXME: b/18385348, needs to handle null from getActiveSubscriptionInfoList
        if (DBG) log("[onResme] mSubInfoList=" + mSubInfoList);

        final TelephonyManager tm =
                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

        updateAvailableSubInfos();
        updateAllOptions();
    }

    @Override
    public void onPause() {
        super.onPause();
        final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
    }

    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        // Disable Sim selection for Data when voice call is going on as changing the default data
        // sim causes a modem reset currently and call gets disconnected
        // ToDo : Add subtext on disabled preference to let user know that default data sim cannot
        // be changed while call is going on
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
             final Preference pref = findPreference(KEY_CELLULAR_DATA);
            if (pref != null) {
                final boolean ecbMode = SystemProperties.getBoolean(
                        TelephonyProperties.PROPERTY_INECM_MODE, false);
                pref.setEnabled((state == TelephonyManager.CALL_STATE_IDLE) && !ecbMode);
            }
        }
    };

    @Override
    public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen,
            final Preference preference) {