非DDS卡发送彩信(MMS)业务流程介绍
前面文章分别介绍过彩信(MMS)流程和双卡DDS切换功能,本篇重点介绍非DDS卡进行彩信业务流程,方便大家理解。
(11条消息) 彩信功能介绍_Jack(Li)的博客-CSDN博客
在彩信功能介绍文章中,我们知道MMS业务priority默认config高于default data,非DDS卡下载由MT SMS触发。在进行MMS业务时,app发送NetworkRequest中携带目标SUBID信息,在TNF中匹配上对应的SIM卡。
(11条消息) 双卡双待手机DDS切换功能介绍_Jack(Li)的博客-CSDN博客
文章中介绍了DDS自动和手动切换方式。
MMS会触发DDS自动切换,区别于DDS的手动切换,并没有将LTE capability切到临时高优先级业务的SIM卡,通过InformDdsToRil与ALLOW_DATA之间的组合来区分场景,只有当Allow_data与informDdsToRil一致时,才将4G的capability全部switch到同一张SIM。
参考代码
qcril_qmi_nas.c void qcril_qmi_nas_request_allow_data
(
const qcril_request_params_type *const params_ptr,
qcril_request_return_type *const ret_ptr
)
{
else if( ( qmi_ril_is_multi_sim_feature_supported() &&
(!strncmp(prop_val, "dsds", QMI_RIL_SYS_PROP_LENGTH_MULTI_SIM )) &&
(nas_common_info.dsds.is_default_data_set == TRUE ) &&
(nas_common_info.dsds.default_data_instance_id != qmi_ril_get_process_instance_id()) &&(!NAS_CACHE_IS_ENTRY_VALID(nas_dms_cached_info.max_active_data_subs) ||
(1 == nas_dms_cached_info.max_active_data_subs))
) || ( qmi_ril_is_multi_sim_feature_supported() &&
(!NAS_CACHE_IS_ENTRY_VALID(nas_dms_cached_info.max_active_data_subs) ||
(1 == nas_dms_cached_info.max_active_data_subs)) )
)
{
if (!NAS_CACHE_IS_ENTRY_VALID(nas_cached_info.is_default_data_subs) ||
(0 == nas_cached_info.is_default_data_subs) ||
(NAS_CACHE_IS_ENTRY_VALID(nas_cached_info.dds_type) && (NAS_DDS_TYPE_PERMANENT_V01 == nas_cached_info.dds_type)))
{
res = qcril_qmi_nas_send_data_subscription_request(NAS_DDS_DURATION_TEMPORARY_V01);
QCRIL_LOG_ESSENTIAL("DDS change triggered because of MMS in DSDS.. res %d", res);
}
参考Log
SUB0为DDS卡,SUB1为副卡,彩信通过SUB1发送。
//MMS app request MMS networkRequest to CS
MmsService: sendMessageMmsService: [SendRequest@1be6253] MmsNetworkManager: start new network request
ConnectivityService: requestNetwork for Request from uid/pid:1001/8297 for NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ]//phoneSwitch handle
PhoneSwitcherNetworkRequstListener: got request NetworkRequest [id=26,legacyType=-1,[Transports:CELLULAR Capabilities:MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>]] with score 0
TelephonyNetworkFactory[1]: got request NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ] with score 0
PhoneSwitcher: InformDdsToRil rild= 0, DDS=0
PhoneSwitcher: InformDdsToRil rild= 1, DDS=0
//PS ability switch, from SUB0 -> SUB1
RILJ : [6806]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB0]
RILJ : [6807]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB1]
RILJ : [6806]< RIL_REQUEST_ALLOW_DATA [SUB0]
RILJ : [6807]< RIL_REQUEST_ALLOW_DATA [SUB1]
//setup pdp on SUB1
RILJ:[6857]> SETUP_DATA_CALL 2 0 cmwap 0 IPV4V6 [SUB1]
RILJ:[6857]< SETUP_DATA_CALL DataCallResponse: {version=11 status=0 retry=-1 cid=0 active=2 type=IPV4V6 ifname=rmnet_data0 mtu=1500 addresses=[10.138.193.14/30] dnses=[211.136.112.50,211.136.150.66] gateways=[10.138.193.13] pcscf=[]} [SUB1]
//MMS
MmsService: [SendRequest@1be6253] MmsNetworkManager: start new network request
MmsService: NetworkCallbackListener.onAvailable: network=129
MmsService: [SendRequest@1be6253] APN name is cmwap
MmsService: [SendRequest@1be6253] Loading APN using name cmwap
MmsService: [SendRequest@1be6253] HTTP: POST http://mmsc.monternet.com[25], proxy=10.0.0.172:80, PDU size=6689
MmsService: [SendRequest@1be6253] HTTP: User-Agent=Android-Mms/2.0
MmsService: [SendRequest@1be6253] HTTP: UaProfUrl=http://www.google.com/oha/rdf/ua-profile-kila.xml
MmsService: [SendRequest@1be6253] HTTP: 200 OKMmsService: [SendRequest@1be6253] HTTP: response size=43
MmsService: [SendRequest@1be6253] MmsNetworkManager: release, count=0
MmsService: getAutoPersisting
MmsService: Schedule requests pending on SIM
MmsServiceBroker: getCarrierConfigValues() by com.android.messaging
//recovery original pdp state after MMS finished
TelephonyNetworkFactory[1]: onReleaseNetworkFor NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ]
RILJ : [6872]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB1]
RILJ : [6873]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB0]
RILJ : [6872]< RIL_REQUEST_ALLOW_DATA [SUB1]
RILJ : [6873]< RIL_REQUEST_ALLOW_DATA [SUB0]
RILJ : [6927]> SETUP_DATA_CALL 14 0 cmnet 0 IPV4V6 [SUB0]
RILJ : [6927]< SETUP_DATA_CALL DataCallResponse: {version=11 status=0 retry=-1 cid=0 active=2 type=IPV4V6 ifname=rmnet_data0 mtu=1500 addresses=[10.172.13.248/28] dnses=[211.136.112.50,211.136.150.66] gateways=[10.172.13.249] pcscf=[]} [SUB0]
非DDS卡发送彩信(MMS)业务流程介绍相关推荐
- 小米MIUI的发送彩信(MMS)的权限研究
前言 原创文章,欢迎转载,请保留出处. 有任何错误.疑问或者建议,欢迎指出. 我的邮箱:Maxwell_nc@163.com 随便写一个android程序添加权限后放到miui中运行会发现安装时没提示 ...
- Android短信开发 发送彩信 ‘ 高通源码 ‘ (彩信发送过程1)
Android彩信发送有下面几个类: 一个一个类看 : 1 . ComposeMessageActivity.java 详情页面 2 . WoringMessage.java ...
- android看彩信自动退出,直接发送彩信?为什么很多安卓的应用都有权限,而我却不知道...
原标题:直接发送彩信?为什么很多安卓的应用都有权限,而我却不知道 在我们在下载一些软件的时候,安装后如果不加注意,可能会漏掉很多重要的安全问题.比如,一些app会取得直接发送彩信的权限,并且我们也不会 ...
- mms彩信发送 java_Android编程之非调用系统界面实现发送彩信的方法(MMS)
本文实例讲述了Android非调用系统界面实现发送彩信的方法.分享给大家供大家参考,具体如下: 一.问题: 最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使 ...
- android 实现发送彩信方法 (mms),非调用,android 实现发送彩信方法 (MMS),非调用系统界面...
最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager smsMan ...
- android 实现发送彩信方法 (MMS),非调用系统彩信界面
最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager smsMan ...
- android 实现发送彩信方法 (MMS)
最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager smsMan ...
- android 实现发送彩信,android 实现发送彩信方法 (MMS)
最近有个突然有个想法,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager sm ...
- 几种常见非接卡的简单介绍
转载自:https://www.cnblogs.com/sdsunjing/p/5019831.html 几种常见非接卡的简单介绍: 1.M1卡 M1卡是非接触式感应卡,数据保存期为10年,可改写10 ...
最新文章
- vs2017开发Node.js控制台程序
- 【译】码农生涯十六条不要
- 链家前DBA判刑7年!你还敢不敢删库?
- es6 语法 (Proxy和Reflect 的对比)
- 广西农产品(广州)交易会 农业大健康·林裕豪:签约农商对接
- 嵌套循环连接,哈希连接,排序合并连接(2015-2-4学习日记)
- ​FreeSWITCH视频会议“标准”解决方案
- 刚刚有水了一道,用递归实现进制转换
- 补习系列(22)-全面解读 Spring Profile 的用法
- python圆形按钮_小白用python写个贪吃蛇给小白看
- VS2005 使用过程中有用的一些快捷键和小技巧
- 【Oracle】Oracle基本数据类型总结
- 汽车在哪扇门后面(博弈论的诡计)
- 计算器html js php代码,html+js实现简单的计算器代码(加减乘除)
- 纸张的规格A3.A4.A5.A6纸的尺寸大小
- graphpad怎么修改图片大小_Graphpad作图小技巧:如何统一图片尺寸
- 谈谈区块链正经的商用场景!
- ArcMap 属性连接和空间连接用法
- integrate函数python_python – Sympy:integrate()奇怪的输出
- 歌曲:后来的我们 歌手:品冠