Android应用创建MCX专用默认承载及SIP注册相关技术咨询
Android应用与EPS承载相关实现方案
1. 建立名为'mcx'的专用APN
由于你方完全控制EPS,可通过以下两种方式实现:
- SIM卡预置配置:在SIM卡的EF(APN)文件中写入
mcx的APN参数,包括APN名称、PDP类型(IPv4/IPv6按需选择)、认证方式等。设备识别到SIM卡中的配置后,会自动向EPS发起该APN的承载建立请求。 - 系统级应用配置:若应用拥有系统权限(如
android.permission.WRITE_APN_SETTINGS),可通过TelephonyManager的addCarrierApn方法手动添加mcx的APN配置,但此方式仅适用于系统签名的应用,普通第三方应用无法调用。
2. 查询已创建的默认承载数量
可行,可通过以下Android系统类实现:
- ConnectivityManager:调用
getAllNetworks()获取所有可用网络实例,遍历每个Network对象并通过getNetworkCapabilities()判断是否为蜂窝网络(TRANSPORT_CELLULAR),再结合NET_CAPABILITY_INTERNET标记筛选默认承载,统计符合条件的数量。 - TelephonyManager(Android 12+):使用
getAvailableNetworks()获取蜂窝网络列表,每个CellularNetwork对象包含承载的基础信息,通过校验默认承载的特征(如绑定的默认APN)统计数量。 - 注意:普通应用需申请
ACCESS_NETWORK_STATE权限,部分厂商可能限制对承载细节的访问。
3. 通过指定默认承载(QCI 69)发送SIP REGISTER消息
需完成以下步骤:
- 识别目标承载:通过
ConnectivityManager遍历所有蜂窝网络,结合TelephonyManager的CellularNetwork.getSliceInfo()(Android 10+)获取每个网络的QCI值,筛选出QCI为69的Network对象。 - 绑定目标网络:调用
ConnectivityManager.bindProcessToNetwork(Network)将当前应用进程绑定到该承载,后续所有网络请求都会通过此承载传输。 - 发送SIP消息:使用Android原生
SipManager或第三方SIP库构造REGISTER消息,由于进程已绑定到指定网络,消息会自动通过QCI 69的承载发送。
- 权限要求:需申请
ACCESS_NETWORK_STATE和CHANGE_NETWORK_STATE权限,部分设备可能需要系统级权限才能执行网络绑定操作。
4. 设备厂商的特定支持要求
是的,需要以下几方面支持:
- 网络切片功能支持:设备需兼容3GPP定义的网络切片标准,能够识别并绑定指定QCI的专用承载(如QCI 69)。
- API权限开放:厂商需开放
TelephonyManager和ConnectivityManager中与承载、切片相关的API,允许普通应用获取QCI信息、绑定指定网络,而非仅对系统应用开放。 - APN配置兼容性:设备需正确识别SIM卡中预置的
mcxAPN配置,不会自动过滤或修改该配置参数。 - 流量路由支持:设备需允许应用指定承载发送SIP流量,不会强制将SIP消息路由到默认的IMS承载(QCI 5)或互联网承载(QCI 9)。
补充:SIM卡预置APN后的完整流程
- 监听承载建立:通过
ConnectivityManager.NetworkCallback监听蜂窝网络连接状态,当检测到APN为mcx的网络上线后,获取对应的Network对象。 - 校验QCI值:调用
CellularNetwork.getSliceInfo()确认该网络的QCI为69。 - 绑定网络:执行
bindProcessToNetwork将应用进程与该承载绑定。 - 发送SIP注册消息:构造并发送SIP REGISTER消息,此时消息将通过QCI 69的承载传输。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

