虚拟运营商与实体运营商的apn匹配逻辑

如下为apn匹配相关代码,从代码可知,平台apn匹配逻辑为:先匹配虚拟运营商apn,如果不满足再匹配实体运营商apn。
注意:如果插入虚拟运营商的卡,也配置了对应虚拟运营商的apn,但是只配置了一部分,例如没有配置用于上网的default类型apn,则会出现不能上网的问题。根据代码逻辑,只要配置了虚拟运营商apn就会匹配虚拟运营商apn,这时即使配置了实体运营商对应的default类型apn也是不会走该部分逻辑的。
/packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java

4038 // Separate the result into MatrixCursor
4039 while (ret.moveToNext()) {
4040 List data = new ArrayList<>();
4041 for (String column : columnNames) {
4042 data.add(ret.getString(ret.getColumnIndex(column)));
4043 }
4044
4045 boolean isCurrentSimOperator;
4046 final long identity = Binder.clearCallingIdentity();
4047 try {
4048 isCurrentSimOperator = tm.matchesCurrentSimOperator(
4049 ret.getString(numericIndex),
4050 getMvnoTypeIntFromString(ret.getString(mvnoIndex)),
4051 ret.getString(mvnoDataIndex));
4052 } finally {
4053 Binder.restoreCallingIdentity(identity);
4054 }
4055
4056 boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
4057 && isCurrentSimOperator;
4058 boolean isMNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
4059 && ret.getString(numericIndex).equals(mccmnc)
4060 && TextUtils.isEmpty(ret.getString(mvnoIndex));
4061 boolean isCarrierIdAPN = !TextUtils.isEmpty(ret.getString(carrierIdIndex))
4062 && ret.getString(carrierIdIndex).equals(String.valueOf(carrierId))
4063 && carrierId != TelephonyManager.UNKNOWN_CARRIER_ID;
4064
4065 if (isMVNOAPN) {
4066 // 1. The APN that query based on legacy SIM MCC/MCC and MVNO
4067 currentCursor.addRow(data);
4068 } else if (isMNOAPN) {
4069 // 2. The APN that query based on SIM MCC/MNC
4070 parentCursor.addRow(data);
4071 } else if (isCarrierIdAPN) {
4072 // The APN that query based on carrier Id (not include the MVNO or MNO APN)
4073 carrierIdCursor.addRow(data);
4074 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值