android 虚拟运营商忽略国内漫游

有些地区的MVNO(虚拟运营商Mobile Virtual Network Operator)和国内各MNO(运营商Mobile Network Operator)签订了协议,使用国内所有MNO的网络不算漫游,所以需要判定如果MVNO的卡注册上国内的plmn,则忽略漫游
上层Ap判定roaming的方法是GsmServiceStateTracker.java中的regCodeIsRoaming;请做如下修改:

--- a/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -220,6 +220,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
     private String mHhbName = null;
     private String mCsgId = null;
     private int mFemtocellDomain = 0;
+    private SIMRecords simRecords = null;

     /* ALPS00236452: manufacturer maintained table for specific operator with multiple PLMN id */
     // ALFMS00040828 - add "46008"
@@ -1348,7 +1349,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
         updateSpnDisplay(false);
     }

-    protected void updateSpnDisplay(boolean forceUpdate) {
+    public void updateSpnDisplay(boolean forceUpdate) {
         if (isInSvlteMode()) {
             mSvlteSST.updateGsmCdmaServiceState(mSS, 0);
             final int updateSpnPhoneId = mSvlteSST.getUpdateSvlteSpnPhoneId(SST_TYPE);
@@ -1363,7 +1364,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
             log("updateSpnDisplay, Use GSMSST (" + mPhone.getPhoneId()
                     + ") to update spn display, forceUpdate = " + forceUpdate);
         }
-        SIMRecords simRecords = null;
+        
         IccRecords r = mPhone.mIccRecords.get();
         if (r != null) {
             simRecords = (SIMRecords) r;
@@ -3124,7 +3125,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
             }
         }

-        if ((ignoreDomesticRoaming == true) && (isRoaming == true)
+        if ((((null != simRecords) && (PhoneConstants.MVNO_TYPE_NONE != simRecords.getMvnoMatchType())) || 
+            (ignoreDomesticRoaming == true)) && (isRoaming == true)
                 && (strServingPlmn != null) && (strHomePlmn != null)) {
             log("ServingPlmn = " + strServingPlmn + " HomePlmn = " + strHomePlmn);
             if (strHomePlmn.substring(0, 3).equals(strServingPlmn.substring(0, 3))) {
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值