5G核心网学习平台
精华问答 #Q09

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

来自知识星球

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绝大多数知识点。

另外,非常感谢各位老师朋友的大力支持。

返回精华问答列表