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

Commit 6499e6d9 authored by Malcolm Chen's avatar Malcolm Chen Committed by Xiangyu/Malcolm Chen
Browse files

Make sure on non-dds phone, try MMS data connection when PS is not

attached.

Before setting up data connection, we check if it's on non-dds and
voice is registered on non-LTE network, if true we'll setup the data
connection even if it's not attached.

Bug: 134086103
Test: manual
Change-Id: I43e150c1d0cc4065da07f4a5ec738b967e7a9a6d
parent 6210ac61
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.telephony;

import static android.telephony.TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1605,6 +1607,12 @@ public class ServiceState implements Parcelable {
        }
    }

    /** @hide */
    public static int networkTypeToAccessNetworkType(@TelephonyManager.NetworkType
            int networkType) {
        return rilRadioTechnologyToAccessNetworkType(networkTypeToRilRadioTechnology(networkType));
    }

    /**
     * Get current data network type.
     *
@@ -1730,6 +1738,36 @@ public class ServiceState implements Parcelable {
        return false;
    }

    /**
     *
     * Returns whether the bearerBitmask includes a networkType that matches the accessNetworkType.
     *
     * The NetworkType refers to NetworkType in TelephonyManager. For example
     * {@link TelephonyManager#NETWORK_TYPE_GPRS}.
     *
     * The accessNetworkType refers to {@link AccessNetworkType}.
     *
     * @hide
     * */
    public static boolean networkBitmaskHasAccessNetworkType(
            @TelephonyManager.NetworkTypeBitMask int networkBitmask, int accessNetworkType) {
        if (networkBitmask == NETWORK_TYPE_BITMASK_UNKNOWN) return true;
        if (accessNetworkType == AccessNetworkType.UNKNOWN) return false;

        int networkType = 1;
        while (networkBitmask != 0) {
            if ((networkBitmask & 1) != 0) {
                if (networkTypeToAccessNetworkType(networkType) == accessNetworkType) {
                    return true;
                }
            }
            networkBitmask = networkBitmask >> 1;
            networkType++;
        }

        return false;
    }

    /** @hide */
    public static int getBitmaskForTech(int radioTech) {
        if (radioTech >= 1) {