开启了FDN功能,在发送信息时会去做FDN check,check通过才有机会继续跑发送流程。
发送短信和彩信做的FDN check不同。
发送短信和彩信做的FDN check不同。
[SOLUTION]
短信:
FDN check会去check SMSC号码和收件人号码,需要将SMSC号码和收件人号码添加到FDN list里,才会check通过,否则无法发送短信。
FDN check会去check SMSC号码和收件人号码,需要将SMSC号码和收件人号码添加到FDN list里,才会check通过,否则无法发送短信。
发送短信时会做SMSC和目标号码的check,是因为短信是走CS域,目标号码是要放在PDU里带给modem知道的,同时SMSC号码也是modem需要从sim卡里读出来,因此modem会知道短信目标号码和SMSC号码这两个信息,会做相关check。
彩信:
发送彩信会去check *99#这个号码,需要将*99# 这串号码添加到FDN list里,才能使用数据连接去发送彩信。
发送彩信会去check *99#这个号码,需要将*99# 这串号码添加到FDN list里,才能使用数据连接去发送彩信。
如果是MODEM 版本是LR9 及以后的版本 ,Modem会去掉*99#的检查。
这样AP 也不需要再加*99#添加到FDN list里.
需要将mms下的WorkingMessage.java中把下面与*99#相关的code删除:
private static final String FDN_FOR_ALLOW_DATA = "*99#";
if (number.equals(FDN_FOR_ALLOW_DATA)) {
Log.d(TAG, "isAbortSending, number = " + number);
return false;
}
private static final String FDN_FOR_ALLOW_DATA = "*99#";
if (number.equals(FDN_FOR_ALLOW_DATA)) {
Log.d(TAG, "isAbortSending, number = " + number);
return false;
}
发送彩信不会去做目标号码的check。
FDN check这件事是在modem做的,modem不会知道彩信的目标号码信息。
因为彩信,他的协议和短信完全不同,他是走PS域,只需要modem帮忙激活PDP,再通过TCP将数据发送给网络。
因此modem只知道激活PDP这件事,在激活PDP的时候只需要check *99# 这个号码。(Modem 是LR9 及以后的版本 不会去Check 了)
也就是说,modem只管激活PDP时去check *99#,它不知道发送彩信的目标号码,modem 不知道彩信PDU的任何信息。