Loading src/com/android/settings/network/apn/ApnEditPageProvider.kt +7 −2 Original line number Diff line number Diff line Loading @@ -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") } } ) { Loading Loading @@ -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, Loading src/com/android/settings/network/apn/ApnNetworkTypes.kt +13 −1 Original line number Diff line number Diff line Loading @@ -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 } } src/com/android/settings/network/apn/ApnStatus.kt +13 −7 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -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 Loading @@ -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) { Loading @@ -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 } Loading Loading
src/com/android/settings/network/apn/ApnEditPageProvider.kt +7 −2 Original line number Diff line number Diff line Loading @@ -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") } } ) { Loading Loading @@ -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, Loading
src/com/android/settings/network/apn/ApnNetworkTypes.kt +13 −1 Original line number Diff line number Diff line Loading @@ -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 } }
src/com/android/settings/network/apn/ApnStatus.kt +13 −7 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -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 Loading @@ -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) { Loading @@ -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 } Loading