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

Commit fc1020f7 authored by chen xu's avatar chen xu Committed by Jack Yu
Browse files

listen to subId change and update dateEnabledSettings

on MSIM devices, userDataEnabledSettings are depending on subId.
thus we should listen to subId change event and reevaluate isdataEnabled

Bug: 128989180
Test: Maunaul test on MSIM
Merged-In: I569087eb8db441544927da12df2a4dc4d37d8157
Change-Id: I569087eb8db441544927da12df2a4dc4d37d8157
(cherry picked from commit af8f2778)
parent a0d3232d
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@ import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierConfigManager;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.LocalLog;
import android.util.LocalLog;
import android.util.Pair;
import android.util.Pair;


@@ -97,12 +98,29 @@ public class DataEnabledSettings {


    private final Phone mPhone;
    private final Phone mPhone;


    private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;

    private ContentResolver mResolver = null;
    private ContentResolver mResolver = null;


    private final RegistrantList mOverallDataEnabledChangedRegistrants = new RegistrantList();
    private final RegistrantList mOverallDataEnabledChangedRegistrants = new RegistrantList();


    private final LocalLog mSettingChangeLocalLog = new LocalLog(50);
    private final LocalLog mSettingChangeLocalLog = new LocalLog(50);


    // for msim, user data enabled setting depends on subId.
    private final SubscriptionManager.OnSubscriptionsChangedListener
            mOnSubscriptionsChangeListener =
            new SubscriptionManager.OnSubscriptionsChangedListener() {
                @Override
                public void onSubscriptionsChanged() {
                    if (mSubId != mPhone.getSubId()) {
                        log("onSubscriptionsChanged subId: " + mSubId + " to: "
                                + mPhone.getSubId());
                        mSubId = mPhone.getSubId();
                        updateDataEnabledAndNotify(REASON_USER_DATA_ENABLED);
                    }
                }
            };

    @Override
    @Override
    public String toString() {
    public String toString() {
        return "[mInternalDataEnabled=" + mInternalDataEnabled
        return "[mInternalDataEnabled=" + mInternalDataEnabled
@@ -115,6 +133,9 @@ public class DataEnabledSettings {
    public DataEnabledSettings(Phone phone) {
    public DataEnabledSettings(Phone phone) {
        mPhone = phone;
        mPhone = phone;
        mResolver = mPhone.getContext().getContentResolver();
        mResolver = mPhone.getContext().getContentResolver();
        SubscriptionManager subscriptionManager = (SubscriptionManager) mPhone.getContext()
                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
        subscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
        updateDataEnabled();
        updateDataEnabled();
    }
    }