1 场景

各个运营商各种默认属性配置,APN配置,海外项目此类需求会比较多。

2 运营商配置方法

2.1 确定配置文件路径

通过packages/apps/CarrierConfig/src/com/android/carrierconfig/DefaultCarrierConfigService.java来确定XML文件的路径;
因为有的配置文件会直接放在packages/apps/CarrierConfig/asset/下,而有的配置会放在vendor自定义目录下。

我们先找到一个mccmnc的宏,如:

private static final String MCCMNC_PREFIX = "carrier_config_mccmnc_";

然后通过MCCMNC_PREFIX去查找,就能找到在函数onLoadConfig()下,通过该函数加载配置文件。

if (config.isEmpty()) {// fallback to use mccmnc.xml when there is no carrier id named configuration found.parser.setInput(getApplicationContext().getAssets().open(MCCMNC_PREFIX + id.getMcc() + id.getMnc() + ".xml"), "utf-8");config = readConfigFromXml(parser, id);
}

注意
每次在CarrierConfig下配置xml文件之后,都需要在AndroidManifest.xml下更新版本号,以免通过OTA升级的用户无法更新:

android:versionCode="1"
android:versionName="1.0.0"

2.2 关键配置类CarrierConfigManager

路径:frameworks/base/telephony/java/android/telephony/CarrierConfigManager.java
所有配置项都可以在CarrierConfigManager里面找得到,自定义项也需要在里面定义好,并附上默认值。

如volte开关:carrier_volte_available_bool

public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool";
sDefaults.putBoolean(KEY_CARRIER_VOLTE_AVAILABLE_BOOL, false);

在指定运营商配置里,我们可以给它打开:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<carrier_config_list><carrier_config><boolean name="carrier_volte_available_bool" value="true" /></carrier_config>
</carrier_config_list>

如运营商名称配置:carrier_name_string

public static final String KEY_CARRIER_NAME_STRING = "carrier_name_string";
sDefaults.putString(KEY_CARRIER_NAME_STRING, "");

如carrier_config_mccmnc_46000.xml的配置

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<carrier_config_list><carrier_config><string name="carrier_name_string">中国移动</string></carrier_config>
</carrier_config_list>

3 APN 配置方法

3.1 确定apns-conf.xml文件路径

通过TelephonyProvider.java来载入APN配置
路径:packages/providers/TelephonyProvider/src/com/android/providers/telephony/TelephonyProvider.java
查找apns-conf.xml的路径:device/mediatek/config/apns-conf.xml,各个厂商apns存放路径可能不同,但是一般apns-conf.xml文件名不会变;
手机里一般存放在/etc/下和/product/下。

定义:

private static final String PARTNER_APNS_PATH = "etc/apns-conf.xml";

查找PARTNER_APNS_PATH就能找到。

private File getApnConfFile() {// Environment.getRootDirectory() is a fancy way of saying ANDROID_ROOT or "/system".File confFile = new File(Environment.getRootDirectory(), PARTNER_APNS_PATH);File oemConfFile =  new File(Environment.getOemDirectory(), OEM_APNS_PATH);File updatedConfFile = new File(Environment.getDataDirectory(), OTA_UPDATED_APNS_PATH);File productConfFile = new File(Environment.getProductDirectory(), PARTNER_APNS_PATH);confFile = pickSecondIfExists(confFile, oemConfFile);confFile = pickSecondIfExists(confFile, productConfFile);confFile = pickSecondIfExists(confFile, updatedConfFile);return confFile;
}

然后在initDatabase()中调用loadApns()来加载XML文件。

3.2 常用配置

如联通的mms APN配置:

  <apn carrier="沃宽带用户手机上网"mcc="460"mnc="01"apn="3gwap"type="mms"proxy="10.0.0.172"port="80"mmsc="http://mmsc.myuni.com.cn"mmsproxy="10.0.0.172"mmsport="80"protocol="IPV4V6"roaming_protocol="IPV4V6"/>

如移动的上网apn配置:

  <apn carrier="CMNET"mcc="460"mnc="00"apn="cmnet"type="default,supl,xcap,rcs"protocol="IPV4V6"roaming_protocol="IPV4V6"/>

这里的default类型为internet类型,即互联网类型。


欢迎大家补充与指正。
转载请注明出处,谢谢~

Android 运营商与APN配置简介相关推荐

  1. 华为运营商级路由器配置示例 | 合集

    VPN VPLS配置 配置静态方式VPLS示例 华为运营商级路由器配置示例 | 配置静态方式VPLS示例_COCO_gsta的博客-CSDN博客 配置LDP方式VPLS示例 华为运营商级路由器配置示例 ...

  2. android运营商相关配置

    按优先级由低到高,分为3类: 影响所有运营商的缺省配置 路径:framework/base/telephony/java/android/telephony/CarrierConfigManager. ...

  3. Android运营商名称的获取及显示过程

    常用的获取方式 手机上运营商名称的显示,通常包括状态栏显示,锁屏界面显示以及设置下面部分菜单的显示,最常用的获取方式如下: Sting operatorName = mSubscriptionInfo ...

  4. 华为运营商级路由器配置示例 | 配置VPLS Multi-homing示例

    组网需求 在VPLS网络中运营商为了提供高可靠性的服务,往往会部署冗余链路,CE通过冗余链路接入一对PE.然而这种冗余链路在提供了链路保护的同时,也存在环路风险.为解决环路问题,可以提出通过在PE上部 ...

  5. Android运营商名称显示之SPN的读取(原)

    https://blog.csdn.net/u010961631/article/details/50682373 上一节介绍了PLMN的读取流程,本节来介绍SPN的读取流程. SPN(Service ...

  6. Android运营商名字显示规则

    可以分为两大类: (1)网络名称:PLMN(注册的mccmnc对应的网络名称)和SPN(卡中的一个文件:EF_SPN,fid是6F46.读取SPN首先要看看SST中是否有这个栏位) (2)SIM卡名称 ...

  7. Android运营商名称显示之PLMN的读取(原)

    Plmn的全称是Public Land Mobile Network(公共陆地移动网络),而在运营商显示方面主要是指 当前SIM所驻留的网络,比如当中国移动的SIM(46000)如果漫游到联通的网络( ...

  8. 运营商API接口用途简介

    运营商API接口是指三大运营商(移动.电信.联通)基于自身的数据,通过技术手段,以接口的方式输出,为企业提供核验.查询服务. 运营商API接口根据功能的不同可以细分为运营商认证接口.手机号空号检测接口 ...

  9. android运营商获取本机号码_一键登录已成大势所趋,Android端操作指南来啦!

    根据极光(Aurora Mobile)发布的<2019年Q2移动互联网行业数据研究报告>,2019年第二季度,移动网民人均安装APP总量已达56款.面对如此繁多的APP,想在用户的手机中占 ...

  10. 华为运营商级路由器配置示例 | 配置BGP VPLS和LDP VPLS interworking示例

    组网需求 如图1,PE1和SPE之间部署LDP方式VPLS,SPE.PE2.PE3之间部署BGP方式VPLS.为实现CE1.CE2和CE3设备之间的互通,需要在LDP方式VPLS和BGP方式VPLS之 ...

最新文章

  1. 港大徐爱民组研究助理招聘-内分泌代谢方向
  2. sg滤波 matlab实现,Matlab,SG滤波器
  3. VTK:actors的类型用法实战
  4. Struts2中过滤器,拦截器,监听器他们之间有什么区别?
  5. python中读取指定的行和列_Python怎么获取excle中指定行和列的值?
  6. html判断整数小数点后两位小数点,js控制input框只能输入数字和一位小数点且小数点后面只有两位小数...
  7. MySql Workbench表PK UN UQ B等字符的含义
  8. 无监督学习:Linear Dimension Reduction(线性降维)
  9. 英语单词辨异 —— 容易理解错的单词
  10. python学习笔记 day33 ftp大作业(未完成)
  11. [luoguP2147] [SDOI2008]Cave 洞穴勘测(并查集 || lct)
  12. Numbers 档案如何转Excel .xlsx 格式?
  13. 外贸软件纺织服装管理成本核算
  14. 爱普生690k打印针测试软件_求兄弟给个爱普生针式打印机 打印断针检测程序,型号Epson LQ-300K+~谢谢了...
  15. html5 3d动画效果代码,精选9款迷人的HTML5 3D动画效果及源码
  16. 【新手教程】如何在Win11上制作一个模仿MacOS的桌面?
  17. 迁移过程中出现报错:无法解析的成员访问表达式[USERENV]
  18. 网站上线教程(购买域名、主机)
  19. 【H2】绘制三角警示牌,使用turtle绘制三角警示牌,陈斌老师北京大学暑期学校Python语言基础与应用
  20. js a-z索引排序

热门文章

  1. http://blog.csdn.net/a9529lty/article/details/6454156
  2. WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行
  3. CTFSHOW网络迷踪-低碳环保
  4. python语言所使用特殊含义符号_python学习之路(22)
  5. no ST-LINK detected解决方案(ST-LINK驱动安装教程)
  6. 管理类联考——英语二——真题篇——按题型分类——大作文
  7. Uipath新版无人值守配置
  8. 拜腾全球首家体验店南京西路落成,接下来这家新造车势力要怎样卖车?
  9. UE4.21 CodeWorksforAndroid-1R7u1
  10. 当Office PIA遭遇C# 4.0