Merge "Get network type from options." into main
This commit is contained in:
@@ -99,7 +99,13 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
|
|||||||
title = stringResource(id = R.string.apn_edit),
|
title = stringResource(id = R.string.apn_edit),
|
||||||
actions = {
|
actions = {
|
||||||
IconButton(onClick = {
|
IconButton(onClick = {
|
||||||
validateAndSaveApnData(apnDataInit, apnData, context, uriInit)
|
validateAndSaveApnData(
|
||||||
|
apnDataInit,
|
||||||
|
apnData,
|
||||||
|
context,
|
||||||
|
uriInit,
|
||||||
|
networkTypeSelectedOptionsState
|
||||||
|
)
|
||||||
}) { Icon(imageVector = Icons.Outlined.Done, contentDescription = "Save APN") }
|
}) { 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),
|
label = stringResource(R.string.apn_mms_port),
|
||||||
enabled = apnData.mmsPortEnabled
|
enabled = apnData.mmsPortEnabled
|
||||||
) { apnData = apnData.copy(mmsPort = it) }
|
) { apnData = apnData.copy(mmsPort = it) }
|
||||||
// Warning: apnProtocol, apnRoaming, mvnoType string2Int
|
|
||||||
SettingsExposedDropdownMenuBox(
|
SettingsExposedDropdownMenuBox(
|
||||||
label = stringResource(R.string.apn_auth_type),
|
label = stringResource(R.string.apn_auth_type),
|
||||||
options = authTypeOptions,
|
options = authTypeOptions,
|
||||||
|
@@ -50,10 +50,22 @@ object ApnNetworkTypes {
|
|||||||
fun getNetworkTypeSelectedOptionsState(networkType: Long): SnapshotStateList<Int> {
|
fun getNetworkTypeSelectedOptionsState(networkType: Long): SnapshotStateList<Int> {
|
||||||
val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
|
val networkTypeSelectedOptionsState = mutableStateListOf<Int>()
|
||||||
Types.forEachIndexed { index, type ->
|
Types.forEachIndexed { index, type ->
|
||||||
if (networkType and TelephonyManager.getBitMaskForNetworkType(type) == 1L) {
|
if (networkType and TelephonyManager.getBitMaskForNetworkType(type) != 0L) {
|
||||||
networkTypeSelectedOptionsState.add(index)
|
networkTypeSelectedOptionsState.add(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return networkTypeSelectedOptionsState
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,8 +25,10 @@ import android.telephony.CarrierConfigManager
|
|||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.compose.runtime.snapshots.SnapshotStateList
|
||||||
import com.android.internal.util.ArrayUtils
|
import com.android.internal.util.ArrayUtils
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
|
import com.android.settings.network.apn.ApnNetworkTypes.getNetworkType
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
data class ApnData(
|
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.
|
* 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.
|
* A dialog with error message will be displayed if the APN data is invalid.
|
||||||
*
|
*
|
||||||
* @return true if there is no error
|
* @return true if there is no error
|
||||||
@@ -222,7 +221,8 @@ fun validateAndSaveApnData(
|
|||||||
apnDataInit: ApnData,
|
apnDataInit: ApnData,
|
||||||
apnData: ApnData,
|
apnData: ApnData,
|
||||||
context: Context,
|
context: Context,
|
||||||
uriInit: Uri
|
uriInit: Uri,
|
||||||
|
networkTypeSelectedOptionsState: SnapshotStateList<Int>
|
||||||
): Boolean {
|
): Boolean {
|
||||||
// Nothing to do if it's a read only APN
|
// Nothing to do if it's a read only APN
|
||||||
if (apnData.customizedConfig.readOnlyApn) {
|
if (apnData.customizedConfig.readOnlyApn) {
|
||||||
@@ -233,9 +233,15 @@ fun validateAndSaveApnData(
|
|||||||
//TODO: showError(this)
|
//TODO: showError(this)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (apnData.newApn || (apnData != apnDataInit)) {
|
val newApnData = apnData.copy(networkType = getNetworkType(networkTypeSelectedOptionsState))
|
||||||
Log.d(TAG, "validateAndSaveApnData: apnData ${apnData.name}")
|
if (newApnData.newApn || (newApnData != apnDataInit)) {
|
||||||
updateApnDataToDatabase(apnData.newApn, apnData.getContentValues(context), context, uriInit)
|
Log.d(TAG, "[validateAndSaveApnData] newApnData.networkType: ${newApnData.networkType}")
|
||||||
|
updateApnDataToDatabase(
|
||||||
|
newApnData.newApn,
|
||||||
|
newApnData.getContentValues(context),
|
||||||
|
context,
|
||||||
|
uriInit
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user