有些默认开启网络打开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());
}*/
}
注释掉谷歌原生的