系统环境:Android 5.1,MTK平台
位置:设置-更多-移动网络-接入点名称(APN)
Activity名称:com.android.settings/com.android.settings.Settings$ApnSettingsActivity
物联网第三方业务平台通用APN为CMMTM,物联网自有业务平台通用APN为CMIOT,如终端未设置APN,则缺省为CMMTM(后续网络改造后物联网APN统一为CMIOT)
固件添加默认APN
添加三方默认APN到/out/target/product/generic/system/etc/apns-conf.xml(参考:Android APN配置),生成ROM刷机
打开设备/system/etc/apns-conf.xml(这个设备的APN配置源文件在vendor/mediatek/proprietary/frameworks/base/telephony/etc/apns-conf.xml;有的在device/generic/goldfish/data/etc/apns-conf.xml)有添加的选项;
并且最终在/data/data/com.android.providers.telephony/databases/telephony.db中如果相应的APN配置项就说明配置成功(刷机需要清除userdata或删除这个db文件)
(还有个device/generic/goldfish/data/etc/apns-conf.xml是给模拟器用的假APN信息;frameworks/base/core/res/res/xml/apns.xml是系统默认APN配置,所有的apn配置文件的version都要和它一致)
案例
国外的一个项目,对方要连接华为的Elte网络,配置完上面的apns-conf.xml,有4G信号了,但是没有网络连接,最后对方说将mnc的002改为00就可以了,说是终端限制了3位mnc号?????
adb shell操作APN配置
content query --uri content://telephony/carriers/ --where "apn='elte.com'"
content delete --uri content://telephony/carriers --where "numeric='413' and apn='elte.com'"
上个APN数据库图:
说明
经测试需要在此xml中配置默认的APN设置,它在系统编译后会自动copy到out/product/system/etc下
vendor/mediatek/proprietary/frameworks/base/telephony/etc/apns-conf.xml(刚开始根据建议,在系统生成目录out/product/system/etc下手动修改apns-conf.xml也能生效)
它最后会出现在终端的system/etc/apns-conf.xml中。系统启动后,会在/data/data/com.android.providers.telephony/databases/telephony.db中生成对应的记录供系统使用此次测试,对方给的mnc为002,但不生效,需要改为00才能正常上内网,对方说是终端限制了3位数据,但终端内配置的其它APN有许多3位的,最终用adb shell netcfg可以看到4G网络分配的IP地址
ccmni0 up 10.96.72.236/8 ....****系统为Android 5.1暂不支持菜单键调出手动添加APN功能,需要修改系统的APN设置界面(如添加一个单独的按钮),开放APN手动添加功能。