当前位置: 首页 > news >正文

Android U 软件fota版本后APN更新逻辑

代码逻辑

TelephonyProvider 对APN数据库进行创建和更新。

  1. onCreate() 创建 DatabaseHelper
  2. 根据isNewBuild确定是首次生成还是重置APN等场景
  3. 首次开机或fota版本会执行updateApnDb()和addAllApnSharedPrefToLocalLog()以创建数据库
    1. updateApnDb:用户修改过的APN会被保存,根据IS_UNEDITED 筛选数据
    2. addAllApnSharedPrefToLocalLog:

相关字段

CARRIERS_UNIQUE_FIELDS_DEFAULTS 的unique 字段

    private static final Map<String, String> CARRIERS_UNIQUE_FIELDS_DEFAULTS = new HashMap();static {// Columns not included in UNIQUE constraint: name, current, edited, user, server, password,// authtype, type, protocol, roaming_protocol, sub_id, modem_cognitive, max_conns,// wait_time, max_conns_time, mtu, mtu_v4, mtu_v6, bearer_bitmask, user_visible,// network_type_bitmask, skip_464xlat, lingering_network_type_bitmask, always_onCARRIERS_UNIQUE_FIELDS_DEFAULTS.put(NUMERIC, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MCC, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MNC, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(APN, "");    //APN不一样是不会合并的,CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(PROXY, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(PORT, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MMSPROXY, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MMSPORT, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MMSC, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(CARRIER_ENABLED, "1");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(BEARER, "0");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MVNO_TYPE, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(MVNO_MATCH_DATA, "");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(PROFILE_ID, "0");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(PROTOCOL, "IP");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(ROAMING_PROTOCOL, "IP");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(USER_EDITABLE, "1");CARRIERS_UNIQUE_FIELDS_DEFAULTS.put(OWNED_BY, String.valueOf(OWNED_BY_OTHERS));CARRIERS_UNIQUE_FIELDS
http://www.lryc.cn/news/605980.html

相关文章:

  • CSS入门指南:从选择器到样式布局
  • SQL 中 WHERE 与 HAVING 的用法详解:分组聚合场景下的混用指南
  • Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版
  • HCIP面试第一章内容总结
  • 【LeetCode 热题 100】4. 寻找两个正序数组的中位数——(解法一)线性扫描
  • 【ARM】PK51关于内存模式的解析与选择
  • 全基因组关联分析(GWAS)中模型参数选择:MLM、GLM与FarmCPU的深度解析
  • 【08】大恒相机SDK C#发开 —— 多相机采集
  • 家政小程序系统开发:满足多元家政需求
  • 智慧油站漏检率↓78%:陌讯多模态融合算法的风险防控实践
  • linux线程封装和互斥
  • WinForm之CheckBox 控件
  • FPGA实现AD9361采集转SRIO与DSP交互,FPGA+DSP多核异构信号处理架构,提供2套工程源码和技术支持
  • Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数
  • 在超算平台异构加速卡AI * 1卡的Ubuntu20.04环境下安装docker服务(未成功)
  • 【Golang】用官方rate包构造简单IP限流器
  • 【14】大恒相机SDK C#开发 ——Bitmap.UnlockBits()什么意思?有什么用?bmpData.Scan0;什么意思?有什么用?
  • go goroutine chan 用法
  • 网络编程(一)TCP编程和UDP编程
  • 前端工程化包管理器:从npm基础到nvm多版本管理实战
  • Vue多请求并行处理实战指南
  • Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用
  • 【人工智能-15】OpenCV直方图均衡化,模板匹配,霍夫变换,图像亮度变换,形态学变换
  • webpack-babel
  • ESXI虚拟交换机 + H3C S5120交换机 + GR5200路由器组网笔记
  • 如何将照片从 realme 手机传输到电脑?
  • 使用橙武低代码平台构建摄影店管理系统的完整指南
  • 【爬虫实战】使用Python和JS逆向基于webpack的游戏平台
  • Rust × WebAssembly 项目脚手架详解
  • Kubernetes 应用部署实战:为什么需要 Kubernetes?