[DESCRIPTION]
如何修改单卡和双卡工程的默认数据连接开关
[SOLUTION]
1 KK及之前的版本
单卡项目
数据连接都是由\alps\mediatek\config\工程名\ProjectConfig.mk下的MTK_DEFAULT_DATA_OFF这个属性来控制。
若MTK_DEFAULT_DATA_OFF=yes,则默认关闭. 同理,若设置成no就是默认打开。
KK版本:
请修改DefaultDataSimSetting.java中的setDataDefaultSim()方法中的boolean enabled = ture,修改成:boolean enabled = false;
as follow:
双卡项目
GB,GB2,GB3,ICS,ICS2:
check一下PhoneProxy.java文件,看其中是否有一个变量mGPRSOn可以通过这个变量来控制数据开关的行为。
该值默认是false的,也就是默认GPRS是Off的,如果把它设为true,就会变成:如果插一张卡就设置为那张卡,如果是两张卡默认为卡槽1中的卡
JB,JB2,JB3,JB5:
修改 isDefaultDataOn() 的返回值,true:默认打开,false:默认关闭
mediatek\frameworks\base\op\java\com\mediatek\op\telephony下TelephonyExt.java:针对所有运营商
mediatek\operator\OP**\frameworks\java\com\mediatek\op\telephony下TelephonyExtOP**.java:针对不同的运营商
public boolean isDefaultDataOn() {
return true;
}
2 L0版本
L0上控制默认数据连接开关的位置在DataSubSelector.java中(alps\frameworks\opt\telephony\src\java\com\mediatek\internal\telephony\dataconnection)
对于OM(Open Market),OP01,OP02,OP09,会有不同的smart switch机制
以OM版本为例来说(OP01,OP02,OP09修改可以参考OM,但需遵循运营商SPEC),smart switch机制实现主要在subSelectorForOm方法中
这里面列举了C0~C8九种不同的SIM卡状态下sim switch的选择,具体可参考注释
单卡项目
对于开机是一张新卡的情况下,要默认开启数据连接的话,将如下的setDataEnable(false)改为setDataEnable(true);
private void subSelectorForOm(Intent intent) {
...
} 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);
} else {
...
双卡项目
对于开机是两张新卡的情况下,要默认开启数据连接的话,将如下的setDataEnable(false)改为setDataEnable(true);
private void subSelectorForOm(Intent intent) {
...
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_ID);
}
-> setDataEnable(false);
} else {
...
PS:
setCapability()是设定3,4G能力在哪张卡上
setDefaultData()是设定数据连接在哪张卡上
3 L1版本
L1版本不支持默认开启数据业务
注意:以上都需要在重新下载程序时清空用户数据或恢复出厂设置时才会生效。