来自知识星球

APN(DNN)存在USIM卡⾥还是⼿机⾥?附:做实验来验证

APN是存在手机里的。以文件的形式保存。
以下以安卓手机进行介绍。
具体是apns_conf.xml这个文件和telephony.db数据库数据。
文件路径是:
MTK平台(通常):alps\mediatek\frameworks\base\telephony\etc
高通平台(通常):android\vendor\qcom\proprietary\telephony-apps\etc
还会写入telephony.db数据库中,名为carriers的表。
在系统中,telephony数据库文件路径是:
/data/user_de/0/com.android.providers.telephony/databases/telephony.db

以上是理论,接下来做个实验来验证。
1、增加apn
1)在apns_conf.xml文件中添加一个apn标签,填入参数

2)刷入系统

3)测试结果:
达到预期,数据库和APN界面都添加了。


2、删除apn
1)在apns_conf.xml文件中删除我Cheney的apn标签
2)刷入系统:

3)测试结果:
达到预期,数据库和APN界面都删除了


3、隐藏
1)修改参数,将默认为1(不隐藏)的user_visible参数设置为0

2)刷入系统;
3)测试结果:
达到预期,在配置文件添加了,数据库表中记录创建成功,设置界面没显示,隐藏成功

4、将隐藏的apn显示出来
将user_visible设置为1,测试流程同上
5、置灰apn
1)置灰应该就是不可修改的意思,数据库表里有个参数user_editable就是关于可修改的意思,尝试配置
文件改动它。

2)刷入系统;
3)测试结果:
达到预期,数据库创建成功,APN设置界面显示但是被置灰,不能修改。

6、总结
学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文
件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显
示(例如屏蔽xcap等)。
虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些
参数,但是项目维护的过程中APN的问题也是比较多的。(ps:Google全家桶的应用会校验APN,APN非
法,如,代理参数乱填、端口参数值超过65535,应用会出现闪退,想不到吧?)
学习APN的加载、显示的源代码,可以更快帮助定位问题。
当问题出现时,无非就两种,要么是数据入库前出错,要么是数据入库后的显示或二次修改出错。我们从
Log或直接在DUT中拿到Carriers表数据,如果数据库里的数据没问题,那么就出现在显示或者二次处理
上,否则,就看读取过程或者配置文件是否错误。
本文重点在APN的加载上。编程最终要落实到实际操作,理论知识学完,sim卡参数如何与Carriers表记
录对应上?如何完成需求?遇到陌生参数怎么办?这都是需要去研究。
来源:https://blog.csdn.net/weixin_44513784/article/details/132743196
作者:孤独的蓝
涵盖了5G核心网、IMS绝大多数知识点。
另外,非常感谢各位老师朋友的大力支持。
