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

Commit 1a5038b5 authored by Charlotte Lu's avatar Charlotte Lu Committed by Android (Google) Code Review
Browse files

Merge "Get network type from options." into main

parents ee5e1ceb d061ae4c
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -99,7 +99,13 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
        title = stringResource(id = R.string.apn_edit),
        actions = {
            IconButton(onClick = {
                validateAndSaveApnData(apnDataInit, apnData, context, uriInit)
                validateAndSaveApnData(
                    apnDataInit,
                    apnData,
                    context,
                    uriInit,
                    networkTypeSelectedOptionsState
                )
            }) { Icon(imageVector = Icons.Outlined.Done, contentDescription = "Save APN") }
        }
    ) {
@@ -154,7 +160,6 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
                label = stringResource(R.string.apn_mms_port),
                enabled = apnData.mmsPortEnabled
            ) { apnData = apnData.copy(mmsPort = it) }
            // Warning: apnProtocol, apnRoaming, mvnoType string2Int
            SettingsExposedDropdownMenuBox(
                label = stringResource(R.string.apn_auth_type),
                options = authTypeOptions,
+13 −1
Original line number Diff line number Diff line
@@ -50,10 +50,22 @@ object ApnNetworkTypes {
    fun getNetworkTypeSelectedOptionsState(networkType: Long): SnapshotStateList<Int> {
        val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
        Types.forEachIndexed { index, type ->
            if (networkType and TelephonyManager.getBitMaskForNetworkType(type) == 1L) {
            if (networkType and TelephonyManager.getBitMaskForNetworkType(type) != 0L) {
                networkTypeSelectedOptionsState.add(index)
            }
        }
        return networkTypeSelectedOptionsState
    }

    /**
     * Gets the network type according to the selected Network type Selected Options.
     * @param networkTypeSelectedOptionsState the selected Network type Selected Options.
     */
    fun getNetworkType(networkTypeSelectedOptionsState: SnapshotStateList<Int>): Long {
        var networkType = 0L
        networkTypeSelectedOptionsState.forEach { option ->
            networkType = networkType or TelephonyManager.getBitMaskForNetworkType(Types[option])
        }
        return networkType
    }
}
+13 −7
Original line number Diff line number Diff line
@@ -25,8 +25,10 @@ import android.telephony.CarrierConfigManager
import android.telephony.TelephonyManager
import android.text.TextUtils
import android.util.Log
import androidx.compose.runtime.snapshots.SnapshotStateList
import com.android.internal.util.ArrayUtils
import com.android.settings.R
import com.android.settings.network.apn.ApnNetworkTypes.getNetworkType
import java.util.Locale

data class ApnData(
@@ -211,9 +213,6 @@ fun getApnDataInit(arguments: Bundle, context: Context, uriInit: Uri, subId: Int

/**
 * Validates the apn data and save it to the database if it's valid.
 *
 *
 *
 * A dialog with error message will be displayed if the APN data is invalid.
 *
 * @return true if there is no error
@@ -222,7 +221,8 @@ fun validateAndSaveApnData(
    apnDataInit: ApnData,
    apnData: ApnData,
    context: Context,
    uriInit: Uri
    uriInit: Uri,
    networkTypeSelectedOptionsState: SnapshotStateList<Int>
): Boolean {
    // Nothing to do if it's a read only APN
    if (apnData.customizedConfig.readOnlyApn) {
@@ -233,9 +233,15 @@ fun validateAndSaveApnData(
        //TODO: showError(this)
        return false
    }
    if (apnData.newApn || (apnData != apnDataInit)) {
        Log.d(TAG, "validateAndSaveApnData: apnData ${apnData.name}")
        updateApnDataToDatabase(apnData.newApn, apnData.getContentValues(context), context, uriInit)
    val newApnData = apnData.copy(networkType = getNetworkType(networkTypeSelectedOptionsState))
    if (newApnData.newApn || (newApnData != apnDataInit)) {
        Log.d(TAG, "[validateAndSaveApnData] newApnData.networkType: ${newApnData.networkType}")
        updateApnDataToDatabase(
            newApnData.newApn,
            newApnData.getContentValues(context),
            context,
            uriInit
        )
    }
    return true
}