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

Commit 8890d7ce authored by Qiang Chen's avatar Qiang Chen Committed by Gerrit - the friendly Code Review server
Browse files

Mms: Add support for sending and receiving mms when mobile data is off.

Can not set up mms apn while mobile data is turned off, so it will fail
to connect when use mms connectivity in app.
Even if mobile data is turned off, we also allow set up mms data when
use mms connectivity.

CRs-Fixed: 532101

Change-Id: I32eac49bec9687052ddbb5ad89da5efc478326df
parent 3ff9afd6
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -574,8 +574,19 @@ public class DcTracker extends DcTrackerBase {
     */
    @Override
    public boolean getAnyDataEnabled() {
        return getAnyDataEnabled(false);
    }

    private boolean getAnyDataEnabled(boolean enableMmsData) {
        synchronized (mDataEnabledLock) {
            if (!(mInternalDataEnabled && mUserDataEnabled && sPolicyDataEnabled)) return false;
            if (!(mInternalDataEnabled && (mUserDataEnabled || enableMmsData)
                    && sPolicyDataEnabled)) {
                log(String.format("getAnyDataEnabled data disabled: mInternalDataEnabled=%b "
                        + "mUserDataEnabled=%b enableMmsData=%b sPolicyDataEnabled=%b",
                        mInternalDataEnabled, mUserDataEnabled,
                        enableMmsData, sPolicyDataEnabled));
                return false;
            }
            for (ApnContext apnContext : mApnContexts.values()) {
                // Make sure we don't have a context that is going down
                // and is explicitly disabled.
@@ -748,8 +759,15 @@ public class DcTracker extends DcTrackerBase {
            }
        }

        // If set the special property, enable mms data even if mobile data is turned off.
        boolean enableMmsData = false;
        if (apnContext.getDataProfileType().equals(PhoneConstants.APN_TYPE_MMS)) {
            enableMmsData = mPhone.getContext().getResources().getBoolean(
                    com.android.internal.R.bool.config_setup_mms_data);
        }

        if (apnContext.isConnectable() &&
                isDataAllowed(apnContext) && getAnyDataEnabled() && !isEmergency()) {
                isDataAllowed(apnContext) && getAnyDataEnabled(enableMmsData) && !isEmergency()) {
            if (apnContext.getState() == DctConstants.State.FAILED) {
                if (DBG) log("trySetupData: make a FAILED ApnContext IDLE so its reusable");
                apnContext.setState(DctConstants.State.IDLE);