码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 虚拟运营商与实体运营商的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 }

  • 相关阅读:
    [SQL Server]在应使用条件的上下文(在 ‘)‘ 附近)中指定了非布尔类型的表达式,查询时间大于某个数值时
    探索AI视觉技术新应用,夸克扫描王首推“离线模式”端侧AI算法提升隐私安全
    PyQt学习笔记-使用QSettings保存系统配置参数
    工具类app变现难?工具类产品广告变现策略实用指南
    Java Web——JavaScript基础
    数据仓库与ETL
    SWT/ANR问题--StorageManagerService卡住
    Jackson+Feign反序列化问题排查
    @SpringBootApplication注解的理解——如何排除自动装配 & 分布式情况下如何自动加载 & nacos是怎么被发现的
    多尺度深度特征(下):多尺度特征学习才是目标检测精髓(论文免费下载)...
  • 原文地址:https://blog.csdn.net/bestwu0666/article/details/125636720
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号