Android6.0 默认开启移动网络

有些默认开启网络打开MTK_DEFAULT_DATA_OFF宏控就可以了,但是有的打开去没有生效,所以要配置MTK下的framework的网络代码。

[FAQ17748]M上第一次开机默认打开数据开关
[DESCRIPTION]
M上插入NEW SIM,google原生是默认关闭数据开关;
可按MTK solution客制修改打开默认数据开关
[SOLUTION]
1./frameworks/opt/telephony/src/java/com/mediatek/internal/telephony/dataconnection/
DataSubSelector.java文件中
注释掉google原生subSelectorForOm函数(含有turnOffNewSimData逻辑);
启用MTK solution的subSelectorForOm函数(对应C0~C8等各种case),之后
可参考FAQ13795客制对应case(L上默认数据开关设置)
2./frameworks/opt/telephony/src/java/com/android/internal/telephony/PhoneBase.java文件
中sendSubscriptionSettings函数,将以下google逻辑注释掉
/// M: default data customization, we use DataSubSelector for op.
if (OPERATOR_OM.equals(SystemProperties.get(PROPERTY_OPERATOR, OPERATOR_OM))
&& TelephonyManager.getDefault().getPhoneCount() == 1) {
Rlog.d(LOG_TAG, "load version om. restore data switch.");
mDcTracker.setDataEnabled(getDataEnabled());
}
3.特别地,对于全网通项目
/frameworks/opt/telephony/src/java/com/mediatek/internal/telephony/dataconnection/
DataSubSelector.java文件中
onSubInfoReady函数中以下分支中turnOffNewSimData修改为
subSelectorForOm
} else if (CdmaFeatureOptionUtils.isCdmaLteDcSupport()) {
// wait for ACTION_SET_RADIO_TECHNOLOGY_DONE
//Turn off data if new SIM detected.
if (OPERATOR_OM.equals(mOperatorSpec)){
mIsSubReady = true;
setCapabilityIfNeeded(intent);
}
turnOffNewSimData(intent);

具体修改如下:

位置在:alps\frameworks\opt\telephony\src\java\com\mediatek\internal\telephony\dataconnection\DataSubSelector.java

 /**
     * Receive ACTION_SUBINFO_RECORD_UPDATED.
     * @param intent the intent conveys info.
     */
    public void onSubInfoReady(Intent intent) {
        mIsNeedWaitImsi = false;

        if (BSP_PACKAGE) {
            log("Don't support BSP Package.");
            return;
        }

        if (mOperatorSpec.equals(OPERATOR_OP01)) {
            subSelectorForOp01(intent);
        } else if (mOperatorSpec.equals(OPERATOR_OP02)) {
            if (SystemProperties.getBoolean("ro.mtk_disable_cap_switch", false) == true) {
                subSelectorForOp02(intent);
            } else {
                subSelectorForOp02();
            }
        } else if (isOP09ASupport()) {
            subSelectorForOp09(intent);
        } else if (OPERATOR_OP18.equals(mOperatorSpec)) {
            // for skip auto switch after user set manually.
            int detectedType = intent.getIntExtra(SubscriptionManager.INTENT_KEY_DETECT_STATUS,
                SubscriptionManager.EXTRA_VALUE_NOCHANGE);
            log("detectedType:" + detectedType);
            if (detectedType != SubscriptionManager.EXTRA_VALUE_NOCHANGE) {
                subSelectorForOp18(intent);
            } else {
                log("skip auto switch when detectedType is NOCHANGE for OP18 when user may set");
            }
        } else if (CdmaFeatureOptionUtils.isCT6MSupport()) {
            subSelectorForOp09C(intent);
            if (CdmaFeatureOptionUtils.isCT6MSupport()){
                mIsSubReady = true;
                setCapabilityIfNeeded(intent);
            }
        } else if (CdmaFeatureOptionUtils.isCdmaLteDcSupport()) {
            // wait for ACTION_SET_RADIO_TECHNOLOGY_DONE
            //Turn off data if new SIM detected.
            if (OPERATOR_OM.equals(mOperatorSpec)){
                mIsSubReady = true;
                setCapabilityIfNeeded(intent);
            }
            //turnOffNewSimData(intent);
            subSelectorForOm(intent);
        } else {
            subSelectorForOm(intent);
        }
    }

    private void subSelectorForSolution15(Intent intent) {
        log("DataSubSelector for C2K om solution 1.5: capability maybe diff with default data");
        // only handle 3/4G switching
        int phoneId = SubscriptionManager.INVALID_PHONE_INDEX;
        String[] currIccId = new String[mPhoneNum];
        //Since SvLTE Project may call subSelectorForOm before sub ready
        //we should do this on sub ready
        if (!CdmaFeatureOptionUtils.isCdmaLteDcSupport()) {
            turnOffNewSimData(intent);
        }
        //Get previous sim switch data
        String capabilityIccid = SystemProperties.get(PROPERTY_DEFAULT_SIMSWITCH_ICCID);
        log("capability Iccid = " + capabilityIccid);
        if (capabilityIccid == null){
            return;
        }
        for (int i = 0; i < mPhoneNum; i++) {
            currIccId[i] = SystemProperties.get(PROPERTY_ICCID[i]);
            if (currIccId[i] == null || "".equals(currIccId[i])) {
                log("error: iccid not found, wait for next sub ready");
                return;
            }
            if (capabilityIccid.equals(currIccId[i])) {
                phoneId = i;
                break;
            }

        }
        log("capability  phoneid = " + phoneId);
        if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) {
            // always set capability to this phone
            setCapability(phoneId);
        }
    }

    private boolean checkCdmaCardInsert() {
        int phoneCount = TelephonyManager.getDefault().getPhoneCount();
        for (int i = 0; i< phoneCount; i++){
            if (SvlteUiccUtils.getInstance().isRuimCsim(i)){
                log("CDMA sim is inserted in " + i);
                return true;
            }
        }
        return false;
    }

    /*private void subSelectorForOm(Intent intent) {
        log("DataSubSelector for OM: only for capability switch; for default data, use google");

        // only handle 3/4G switching
        int phoneId = SubscriptionManager.INVALID_PHONE_INDEX;
        String[] currIccId = new String[mPhoneNum];

        //Since SvLTE Project may call subSelectorForOm before sub ready
        //we should do this on sub ready
        if (!CdmaFeatureOptionUtils.isCdmaLteDcSupport()) {
            turnOffNewSimData(intent);
        }

        //Get previous default data
        // String defaultIccid = SystemProperties.get(PROPERTY_DEFAULT_DATA_ICCID);
        //Modify the way for get defaultIccid,
        //because the SystemProperties may not update on time
        String defaultIccid = "";
        int defDataSubId = SubscriptionController.getInstance().getDefaultDataSubId();
        int defDataPhoneId = SubscriptionManager.getPhoneId(defDataSubId);
        if (defDataPhoneId >= 0) {
            if (defDataPhoneId >= PROPERTY_ICCID_SIM.length) {
               log("phoneId out of boundary :" + defDataPhoneId);
            } else {
               defaultIccid = SystemProperties.get(PROPERTY_ICCID_SIM[defDataPhoneId]);
            }
        }
        log("Default data Iccid = " + defaultIccid);
        if (("N/A".equals(defaultIccid)) || ("".equals(defaultIccid))) {
            return;
        }
        for (int i = 0; i < mPhoneNum; i++) {
            currIccId[i] = SystemProperties.get(PROPERTY_ICCID[i]);
            if (currIccId[i] == null || "".equals(currIccId[i])) {
                log("error: iccid not found, wait for next sub ready");
                return;
            }
            if (defaultIccid.equals(currIccId[i])) {
                phoneId = i;
                break;
            }

            if (NO_SIM_VALUE.equals(currIccId[i])) {
                log("clear mcc.mnc:" + i);
                String propStr;
                if (i == 0) {
                    propStr = "gsm.sim.ril.mcc.mnc";
                } else {
                    propStr = "gsm.sim.ril.mcc.mnc." + (i + 1);
                }
                SystemProperties.set(propStr, "");
            }
        }
        // check pin lock
        if (RadioCapabilitySwitchUtil.isAnySimLocked(mPhoneNum)) {
            log("DataSubSelector for OM: do not switch because of sim locking");
            setNeedWaitUnlock(NEED_TO_WAIT_UNLOCKED, "true");
            mIntent = intent;
            setSimStatus(intent);
            setNewSimSlot(intent);
            return;
        } else {
            log("DataSubSelector for OM: no pin lock");
            setNeedWaitUnlock(NEED_TO_WAIT_UNLOCKED, "false");
        }
        if (mAirplaneModeOn) {
            log("DataSubSelector for OM: do not switch because of mAirplaneModeOn");
            mIsNeedWaitAirplaneModeOff = true;
            mIntent = intent;
            setSimStatus(intent);
            setNewSimSlot(intent);
            return;
        }

        log("Default data phoneid = " + phoneId);
        if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) {
            // always set capability to this phone
            setCapability(phoneId);
        }

        updateDataEnableProperty();
        // clean system property
        resetSimStatus();
        resetNewSimSlot();
    }*/

    private void subSelectorForOm(Intent intent) {
        int phoneId = SubscriptionManager.INVALID_PHONE_INDEX;
        int insertedSimCount = 0;
        int insertedStatus = 0;
        int detectedType = intent.getIntExtra(SubscriptionManager.INTENT_KEY_DETECT_STATUS, 0);
        String[] currIccId = new String[mPhoneNum];

        log("DataSubSelector for OM");

        for (int i = 0; i < mPhoneNum; i++) {
            currIccId[i] = SystemProperties.get(PROPERTY_ICCID[i]);
            if (!NO_SIM_VALUE.equals(currIccId[i])) {
                ++insertedSimCount;
                insertedStatus = insertedStatus | (1 << i);
            }
        }
        log("Inserted SIM count: " + insertedSimCount + ", insertedStatus: " + insertedStatus);

        //Get previous default data
        String defaultIccid = SystemProperties.get(PROPERTY_DEFAULT_DATA_ICCID);
        log("Default data Iccid = " + defaultIccid);

        if (insertedSimCount == 0) {
            // No SIM inserted
            // 1. Default Data: unset
            // 2. Data Enable: OFF
            // 3. 34G: No change
            log("C0: No SIM inserted, set data unset");
            setDefaultData(SubscriptionManager.INVALID_PHONE_INDEX);
        } else if (insertedSimCount == 1) {
            for (int i = 0; i < mPhoneNum; i++) {
                if ((insertedStatus & (1 << i)) != 0) {
                    phoneId = i;
                    break;
                }
            }

            if (detectedType == SubscriptionManager.EXTRA_VALUE_NEW_SIM) {
                // Case 1: Single SIM + New SIM:
                // 1. Default Data: this sub
                // 2. Data Enable: OFF
                // 3. 34G: this sub
                log("C1: Single SIM + New SIM: Set Default data to phone:" + phoneId);
                if (setCapability(phoneId)) {
                    setDefaultData(phoneId);
                }
                //setDataEnable(false);
                setDataEnabled(phoneId, true);
            } else {
                if (defaultIccid == null || "".equals(defaultIccid)) {
                    //It happened from two SIMs without default SIM -> remove one SIM.
                    // Case 3: Single SIM + Non Data SIM:
                    // 1. Default Data: this sub
                    // 2. Data Enable: OFF
                    // 3. 34G: this sub
                    log("C3: Single SIM + Non Data SIM: Set Default data to phone:" + phoneId);
                    if (setCapability(phoneId)) {
                        setDefaultData(phoneId);
                    }
                    //setDataEnable(false);
                    setDataEnabled(phoneId, true);
                } else {
                    if (defaultIccid.equals(currIccId[phoneId])) {
                        // Case 2: Single SIM + Defult Data SIM:
                        // 1. Default Data: this sub
                        // 2. Data Enable: No Change
                        // 3. 34G: this sub
                        log("C2: Single SIM + Data SIM: Set Default data to phone:" + phoneId);
                        if (setCapability(phoneId)) {
                            setDefaultData(phoneId);
                        }
                    } else {
                        // Case 3: Single SIM + Non Data SIM:
                        // 1. Default Data: this sub
                        // 2. Data Enable: OFF
                        // 3. 34G: this sub
                        log("C3: Single SIM + Non Data SIM: Set Default data to phone:" + phoneId);
                        if (setCapability(phoneId)) {
                            setDefaultData(phoneId);
                        }
                        //setDataEnable(false);
                        setDataEnabled(phoneId, true);
                    }
                }
            }
        } else if (insertedSimCount >= 2) {
            if (detectedType == SubscriptionManager.EXTRA_VALUE_NEW_SIM) {
                int newSimStatus = intent.getIntExtra(
                        SubscriptionManager.INTENT_KEY_NEW_SIM_SLOT, 0);

                boolean isAllNewSim = true;
                for (int i = 0; i < mPhoneNum; i++) {
                    if ((newSimStatus & (1 << i)) == 0) {
                        isAllNewSim = false;
                    }
                }

                if (isAllNewSim) {
                    // Case 4: Multi SIM + All New SIM:
                    // 1. Default Data: Unset
                    // 2. Data Enable: OFF
                    // 3. 34G: Sub1
                    log("C4: Multi SIM + All New SIM: Set 34G to sub1");
                    if (setCapability(PhoneConstants.SIM_ID_1)) {
                        setDefaultData(SubscriptionManager.INVALID_PHONE_INDEX);
                    }
                    //setDataEnable(false);
                    setDataEnabled(phoneId, true);
                } else {
                    if (defaultIccid == null || "".equals(defaultIccid)) {
                        //Not found previous default SIM, don't change.
                        // Case 6: Multi SIM + New SIM + Non Default SIM:
                        // 1. Default Data: Unset
                        // 2. Data Enable: OFF
                        // 3. 34G: No Change
                        log("C6: Multi SIM + New SIM + Non Default SIM: No Change");
                        setDefaultData(SubscriptionManager.INVALID_PHONE_INDEX);
                        //setDataEnable(false);
                        setDataEnabled(phoneId, true);
                    } else {
                        for (int i = 0; i < mPhoneNum; i++) {
                            if (defaultIccid.equals(currIccId[i])) {
                                phoneId = i;
                                break;
                            }
                        }

                        if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) {
                            // Case 5: Multi SIM + New SIM + Default SIM:
                            // 1. Default Data: Default SIM
                            // 2. Data Enable: No Change
                            // 3. 34G: Default SIM
                            log("C5: Multi SIM + New SIM + Default SIM: Set Default data to "
                                + "phone:" + phoneId);
                            if (setCapability(phoneId)) {
                                setDefaultData(phoneId);
                            }
                        } else {
                            // Case 6: Multi SIM + New SIM + Non Default SIM:
                            // 1. Default Data: Unset
                            // 2. Data Enable: OFF
                            // 3. 34G: No Change
                            log("C6: Multi SIM + New SIM + Non Default SIM: No Change");
                            setDefaultData(SubscriptionManager.INVALID_PHONE_INDEX);
                            //setDataEnable(false);
                            setDataEnabled(phoneId, true);
                        }
                    }
                }
            } else {
                if (defaultIccid == null || "".equals(defaultIccid)) {
                    //Case 8: Multi SIM + All Old SIM + No Default SIM:
                    // 1. Default Data: Unset
                    // 2. Data Enable: No Change
                    // 3. 34G: No change
                    //Do nothing
                    log("C8: Do nothing");
                } else {
                    for (int i = 0; i < mPhoneNum; i++) {
                        if (defaultIccid.equals(currIccId[i])) {
                            phoneId = i;
                            break;
                        }
                    }
                    if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) {
                        // Case 7: Multi SIM + All Old SIM + Default SIM:
                        // 1. Default Data: Default SIM
                        // 2. Data Enable: No Change
                        // 3. 34G: Default SIM
                        log("C7: Multi SIM + New SIM + Default SIM: Set Default data to phone:"
                                + phoneId);
                        if (setCapability(phoneId)) {
                            setDefaultData(phoneId);
                        }
                    } else {
                        //Case 8: Multi SIM + All Old SIM + No Default SIM:
                        // 1. Default Data: Unset
                        // 2. Data Enable: No Change
                        // 3. 34G: No change
                        //Do nothing
                        log("C8: Do nothing");
                    }
                }
            }
        }
    }

frameworks\opt\telephony\src\java\com\android\internal\telephony\PhoneBase.java

        }
        /// M: default data customization, we use DataSubSelector for op.
        /*if (OPERATOR_OM.equals(SystemProperties.get(PROPERTY_OPERATOR, OPERATOR_OM)) &&
                (!CdmaFeatureOptionUtils.isCT6MSupport() ||
                TelephonyManager.getDefault().getPhoneCount() == 1)) {
            Rlog.d(LOG_TAG, "load version om. restore data switch.");
            mDcTracker.setDataEnabled(getDataEnabled());
        }*/
    }
注释掉谷歌原生的

猜你喜欢

转载自blog.csdn.net/lwz622/article/details/85310106