当新的 SIM 卡(从未使用过)插入新的智能手机(从未使用过)时,智能手机似乎无需任何手动设置即可设置正确的 APN。 是否有一个与 APN <-> 网络运营商关联的全局表(智能手机内)?
注意:使用AT命令查询新SIM卡似乎有首选网络运营商,但内存中没有保存APN。
我可以在 SIM 端发表评论,并确认 APN 设置未保存在 SIM 内。是的,就网络运营商而言,有一个名为 EF_PLMN 的文件,其中包含移动国家代码 (MCC) 和移动网络代码 (MNC),以允许设备更快地连接到正确的网络。
就 APN 而言,据我了解,设备具有该地区主要运营商的内部(内存)APN 列表。当运营商订购设备时,他们会确保“他们的”APN 是正确的。是的,一个大问题是设备内运营商的 APN 不正确,这就是网络运营商在新设备中检测到 SIM 卡时需要发送 APN 设置的原因。
我没有有关如何查询此内部 APN 列表的信息,因为它可能是固件的一部分。
对于 Android,移动设备从 SIM 卡中提取 MCC(移动国家一号)和 MNC(移动网络代码),或许还有其他值。
然后,它根据 Android 创建的内部 SQlite 数据库配置 APN,该数据库基于包含以下格式的 APN 设置的 XML 文件:
<apn carrier="CarrierXYZ"
mcc="123"
mnc="123"
apn="carrierxyz"
type="default,supl,mms,ims,cbs"
mmsc="http://mms.carrierxyz.com"
mmsproxy="0.0.0.0"
mmsport="80"
bearer_bitmask="4|5|6|7|8|12"
/>
https://android.googlesource.com/device/sample/+/master/etc/apns-full-conf.xml https://source.android.com/devices/tech/config/update
在完成美国大型移动网络运营商 (MNO) 的审批程序后,审批流程的一部分涉及在调制解调器连接到网络时自动选择正确的默认APN。对于特殊情况,可以覆盖此设置,例如,如果用户需要使用 MNO 提供的 VPN(需要特殊的 APN)。
虽然我不知道这是否对每种情况都相同,但所有手机都会经过审批流程,如果是 MNO 批准的手机,那么 MNO 很可能会坚持至少加载默认 APN如果用户未提供任何内容。 SIM 允许手机连接的网络可以从调制解调器读取,无需提供 APN,因此使用它从列表中查找默认 APN 非常容易。由于电话公司确实不想为每个 MNO 更改其软件,因此维护列表可以让电话制造商、MNO 和最终用户变得更容易。