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

Commit 1c9921a2 authored by Charlotte Lu's avatar Charlotte Lu
Browse files

apn insert exception for duplicate apn entry

Test: Visual Test
Fix: 321619947
Change-Id: I362cd0c5dec7b8fab9af081f67717c4633064cdd
parent 0f577f7d
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -145,12 +145,7 @@ fun ApnPage(apnDataInit: ApnData, apnDataCur: MutableState<ApnData>, uriInit: Ur
    ) {
        Column {
            if (apnData.validEnabled) {
                apnData = apnData.copy(
                    networkType = ApnNetworkTypes.getNetworkType(
                        networkTypeSelectedOptionsState
                    )
                )
                valid = validateApnData(uriInit, apnData, context)
                valid = validateApnData(apnData, context)
                valid?.let {
                    Text(
                        text = it,
+11 −5
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.content.ContentValues
import android.content.Context
import android.net.Uri
import android.provider.Telephony
import android.telephony.TelephonyManager
import android.util.Log
import com.android.settings.R
import com.android.settingslib.utils.ThreadUtils
@@ -200,14 +199,21 @@ fun updateApnDataToDatabase(
    }
}

fun isItemExist(uri: Uri, apnData: ApnData, context: Context): String? {
    val contentValueMap = apnData.getContentValueMap(context)
    contentValueMap.remove(Telephony.Carriers.CARRIER_ENABLED)
fun isItemExist(apnData: ApnData, context: Context): String? {
    var contentValueMap = apnData.getContentValueMap(context)
    val removedList = arrayListOf(
        Telephony.Carriers.NAME, Telephony.Carriers.USER,
        Telephony.Carriers.SERVER, Telephony.Carriers.PASSWORD, Telephony.Carriers.AUTH_TYPE,
        Telephony.Carriers.TYPE, Telephony.Carriers.NETWORK_TYPE_BITMASK,
        Telephony.Carriers.CARRIER_ENABLED
    )
    contentValueMap =
        contentValueMap.filterNot { removedList.contains(it.key) } as MutableMap<String, Any>
    val list = contentValueMap.entries.toList()
    val selection = list.joinToString(" AND ") { "${it.key} = ?" }
    val selectionArgs: Array<String> = list.map { it.value.toString() }.toTypedArray()
    context.contentResolver.query(
        uri,
        Telephony.Carriers.CONTENT_URI,
        sProjection,
        selection /* selection */,
        selectionArgs /* selectionArgs */,
+3 −3
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ fun validateAndSaveApnData(
    context: Context,
    uriInit: Uri
): String? {
    val errorMsg = validateApnData(uriInit, newApnData, context)
    val errorMsg = validateApnData(newApnData, context)
    if (errorMsg != null) {
        return errorMsg
    }
@@ -194,7 +194,7 @@ fun validateAndSaveApnData(
 *
 * @return An error message if the apn data is invalid, otherwise return null.
 */
fun validateApnData(uri: Uri, apnData: ApnData, context: Context): String? {
fun validateApnData(apnData: ApnData, context: Context): String? {
    var errorMsg: String?
    val name = apnData.name
    val apn = apnData.apn
@@ -206,7 +206,7 @@ fun validateApnData(uri: Uri, apnData: ApnData, context: Context): String? {
        validateMMSC(true, apnData.mmsc, context)
    }
    if (errorMsg == null) {
        errorMsg = isItemExist(uri, apnData, context)
        errorMsg = isItemExist(apnData, context)
    }
    if (errorMsg == null) {
        errorMsg = validateAPNType(