当前位置: 首页 > 工具软件 > apn-proxy > 使用案例 >

Android手机APN简介

澹台冯浩
2023-12-01

1.简介

APN(Access Point Name)是通过手机上网必须配置的一个参数,用来决定手机通过哪种接入方式来访问网络。只要我们的手机插上sim卡之后就可以在手机的设置中查看当前sim卡内置的默认apn参数,一般的安卓智能机都可以在sim卡设置中找到“接入点名称(APN)”并可以查看和新增apn。

下面我们看看apn到底是怎么使用的,在启动Android手机或者启动Android虚拟设备后,所有的APN配置信息都会保存在telephony.db的SQLite数据库表名为carriers的表中。我们可以将此数据库文件pull到本地,然后可以查看carriers表的结构和其中的APN配置信息数据,命令如下:

 adb pull /data/data/com.android.providers.telephony/databases/telephony.db D:/telephony.db

 我们可以在D盘中找到生成的名称为telephony.db的数据库。


在Android系统中APN配置文件的路径:

 1)vendor\qcom\proprietary\qrdplus\Extension\apps\etc\apn-conf.xml

 2)framework\base\core\res\xml\apn.xml

2.APN的配置

             字段名称

                描述

name

APN配置名称

numeric

运营商编号

apn

APN接入点,如移动的有:cmwapcmnet

proxy

代理服务器地址

Port

端口号

mmsproxy

彩信代理服务器地址

mmsport

彩信代理服务器端口号

Mmsc

彩信接入服务器地址

Type

APN接入类型


存储apn的数据库telephony.db的相关代码在android\packages\providers\TelephonyProvider
其中创建表的SQL为:

 "CREATE TABLE " +CARRIERS_TABLE +

                "(_id INTEGER PRIMARY KEY," +"name TEXT," +"numeric TEXT," +

                "mcc TEXT,"+ "mnc TEXT," + "apn TEXT," + "user TEXT," +

                "serverTEXT," + "password TEXT," + "proxy TEXT," +

                "port TEXT," + "mmsproxyTEXT," + "mmsport TEXT," +

                "mmscTEXT," + "authtype INTEGER," + "type TEXT," +

                "current INTEGER," +"protocol TEXT," + "roaming_protocol TEXT," +

                "carrier_enabledBOOLEAN," + "bearer INTEGER," +

                "mvno_typeTEXT," + "mvno_match_data TEXT," +

                "preferredBOOLEAN DEFAULT 0," + "read_only BOOLEAN DEFAULT 0," +

                "ppp_numberTEXT," + "localized_name TEXT," + "v_mccmnc TEXT);"

虽然字段众多但是我们从用途上可以把apn分为发送彩信和上网两种,其中上网的apn又分为wap和net。

2.1 上网相关的APN

1)字段

 <apn carrier=""  mcc=""  mnc=""  apn=""  user=""  password=""

       proxy=""  port=""  type=""  authtype=""  />

     其中carrier、apn、mcc、mnc几个字段是一个完整的apn一定要有的,proxy和port两个字段一般情况下上网的apn都会有这两个字段,而其他的字段都是非必须的。

     这里需要强调一下type和authtype,type字段可以有多个属性值,依次用逗号隔开,authtype在自己添加apn时可能给定的值是字符串,我们需要转换为相应的值。具体关系如下:

               属性值

             合入值

None

0

不写(默认值)

-1

PAP

1

CHAP

2

PAP OR CHAP

3

2)分类

上网分为wap和net两种方式,使用net手机就会直接连入互联网,而使用wap则会中间多了一个代理网关,移动联通均是10.0.0.172,端口80。而写与联网有关的代码,wap和net是不一样的:

     wap一般是这样:

 view plainURL url = new URL("http://10.0.0.172:80/index.htm");

 HttpURLConnection hc = (HttpURLConnection)url.openConnection();

 hc.setRequestProperty("X-Online-Host","www.csdn.net");

     net一般是这样:

 view plainURL url = newURL("http://www.csdn.net/index.htm"); 

     HttpURLConnection hc =(HttpURLConnection) url.openConnection();

     因此,编写程序时就要检测当前的APN类型,判断是wap还是net方式,有时候可能还要修改当前的APN,都是要解决的问题。

2.2 彩信APN

主要字段包括:

<apn  carrier=""  mcc=""  mnc=""  apn=""  user=""  password=""

     server="" mmsc=""  mmsproxy=""  mmsport=""  type=""

      authtype="" />

和上网的字段相同,carrier、apn、mcc、mnc几个字段是一定要有的。除此之外mmsproxy和mmsport两个字段在发彩信的apn中也是必须的。

2.3 Android支持的apn类型

Android中最多支持5种类型的APN,其功能如下所示:

                   类型

               描述

                  default

默认数据连接,即浏览器、Email等普通连接

                  mms

接收和发送彩信使用的数据连接

                  supl

支持APGS的数据连接

                  dun                         

拨号连接

                  hipri

扩展


此表中的数据优先级是由低到高的,即default数据连接的优先级最低,而hipri数据连接的优先级最高。比如在手机上网聊天时,将建立default数据连接;当手机收到一条彩信,因为彩信的数据连接是mms,这时会断开default数据连接而创建mms数据连接,从而能快速接收到此彩信,因为mms比default的数据连接优先级高。因此,在发送和接收彩信的同时不能上网。

3 补充

1.概念。

一些大公司通常会使用专用APN,其接入点随意定义,只要和该省运营商其他APN不冲突即可。专有APN在功能上可以和Internet的VPN做类比,实际上他就是基于GPRS的VPN网络。

2.常见组网方式。

1)运营商部署一条专线接入到企业的网络中,局端和企业端路由器之间采用私有IP进行连接。

2)局端互连路由器与GGSN采用GRE隧道连接。

3.重要特点。

1)除非运营商分配一个Internet IP地址,否则计算机没有任何办法通过Internet访问该APN中的主机。

2)只有手机卡号在APN中的白名单之列,该手机才可以接入该APN。

3)企业客户可以建立一套RADIUS和DHCP服务器,GGSN向RADIUS服务器提供用户主叫号码,采用主叫号码和用户账号相结合的认证方式;用户通过认证后由DHCP服务器分配企业内部的静态IP地址。补充:该认证方式不一定适合于每个省的运营商,这取决于该省运营商的APN管理平台。

 类似资料: