关闭数据时,为什么有点卡能发送彩信,有的不能?

问题描述:

今天有一个项目遇到"有点卡能发送彩信,有的不能"问题,查看MTK FAQ,发现原生android竟然有一个判断,判断运营商是否会对彩信的流量收费,然后决定是否能在关闭数据流量时发送彩信.,可见谷歌针对这个问题还是研究过,但是客户给的APN他们自己的不能保证完全正确,使得谷歌的这个判断经常是错的,于是出现 有的彩信流量免费关闭流量不能发送,反而收费就能发送.于是在不能要到运行商正确的APN的情况下,我们只有针对运营商强行配置,

判断的代码如下:
framework/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java

boolean isDataAllowed(ApnContext apnContext, DataConnectionReasons dataConnectionReasons) {
        boolean isMeteredApnType = apnContext == null
                || ApnSetting.isMeteredApnType(apnContext.getApnType(), mPhone);

        isMeteredApnType = true;//强制认为彩信是流量收费,这样后面他就不会在流量关闭下发送彩信了。
}

isMeteredApnType 这个判断
true :彩信流量收费,关闭流量不发彩信
false:彩信流量不收费,按彩信数收费(如国内运营商),关闭流量发彩信
如果我们确定运行商是否收费,那么我们就把这个isMeteredApnType固定死,

当然上述的改法实际上是不规范的,
正确的做法是:
(1)找到具体源码是如何判断APN收费
(2)配置正确APN

发布了67 篇原创文章 · 获赞 42 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/w1764662543/article/details/97797736
今日推荐