文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android APN的配置和加载

2023-09-06 18:22

关注

APN简介

APN指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。对于手机用户来说,可以访问的外部网络类型有很多,例如:Internet、WAP网站,集团企业内部网络、行业内部专用网络。而不同的接入点所能访问的范围以及接入的方式是不同的,网络侧如何知道手机激活以后要访问哪个网络从而分配哪个网络的IP呢,这就要靠APN来区分了,即APN决定了用户的手机通过哪种接入方式来访问什么样的网络。

APN通常作为用户签约数据存储在HSS(归属用户服务器)/HLR中,用户手机在发起分组业务时也可向网络侧SGSN(Serving GPRS Support Node,服务GPRS支持节点)/MME(Mobility Management Entity,移动管理实体)提供APN,SGSN/MME(以下简称SGSN)根据用户所提供的APN,通过DNS(Domain Name Server,域名服务器)进行域名解析,从而获取到GGSN/PGW(以下简称GGSN)的IP地址,将用户接入到APN对应的PDN中,此外HLR中也可存储一个通配符,这样用户或SGSN就可以选择接入一个没有在HLR中存储的APN。

APN配置

APN配置文件是/etc/目录的apns-conf.xml,配置的参数经过解析后,存放到数据库telephony.db的表carriers中,表的列字段都定义在Telephony.java文件的子类Carriers中,常见字段见附件1([Carriers参数定义]。如果想查看 carriers 的表结构和其中的 APN 配置信息,可以将 telephony.db pull 到本地,通过 SQLiteExpert Professional查看。Telephony.db 在手机的路径为:

/data/data/com.android.providers.telephony/databases/telephony.db

MTK androidR版本路径为:

/data_mirror/data_de/null/0/com.android.providers.telephony/databases/ telephony.db

我们应该根据运营商需求的参数来配置

APN主要参数介绍:

    carrier----运营商名称,没有特殊意义

    mcc -----运营商国家码

    mnc-----运营商网络码

    apn-----APN名称

    mmsc----彩信中心地址,没有type mms可以不配

    mmsproxy----彩信代理

    mmsport----彩信端口

    type----APN类型,有default、mms、supl、xcap、mms、dun等

    protocol----非漫游IP协议,有IP、IPV6、IPV4V6,不配置表示IP即IPV4

    roaming_protocol----漫游IP协议,有IP、IPV6、IPV4V6,不配置表示IP即IPV4

    mvno_type----虚拟网络运营商类型,有gid、spn、imsi

    mvno_match_data----mvno_type对应的value

    user_editable----在APN菜单中可编辑

    user_visible----在APN菜单中可见

    network_type_bitmask----网络类型掩码,1~20,具体意义见附录2,若不配置,

    表示除了18以外的其他值;

APN的加载

APN的加载即APN数据库初始化,由TelephonyProvider模块完成。

如果需要修改 apn 配置,可以直接修改 apns-conf.xml 中的文件。 apns-conf.xml 一般在手机的路径为: etc/apns-conf.xml。将修改后的 apns-conf.xml 文件 push 到etc 下,然后将 databases 下的 telephony.db 删掉,重新开机,手机就会重新加载 apn 信息到 carriers。如果我们没有对 telephony.db 进行删除,正常的开关机是不会再重新加载 apns-conf.xml 的。

附录1([Carriers参数定义]:


public static final String NAME = "name";

public static final String APN = "apn";

public static final String PROXY = "proxy";

public static final String PORT = "port";

public static final String MMSPROXY = "mmsproxy";

public static final String MMSPORT = "mmsport";

public static final String MMSC = "mmsc";

public static final String MCC = "mcc";

public static final String MNC = "mnc";

public static final String AUTH_TYPE = "authtype";

public static final String TYPE = "type";

public static final String PROTOCOL = "protocol";

public static final String ROAMING_PROTOCOL = "roaming_protocol";

public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";

public static final String MVNO_TYPE = "mvno_type";

public static final String MVNO_MATCH_DATA = "mvno_match_data";

public static final String USER_VISIBLE = "user_visible";

public static final String USER_EDITABLE = "user_editable";

附录2网络类型:

 

来源地址:https://blog.csdn.net/m0_59708011/article/details/127989706

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯