首页 > 代码库 > BUG_学习随笔(移动数据快捷开关)

BUG_学习随笔(移动数据快捷开关)

4.3

一、

状态栏移动数据快捷开关:开启飞行模式或者关机重启后,移动数据状态与之前的相反;但是从系统其它地方移动数据开关的操作不会这样

分析移动数据状态更新处理 ,找到改变其值的地方(发现有radio的log),对比系统其它地方与状态栏对其的操作的底层radio的log确定差异;仿照正确的代码处理地方对状态栏移动数据开关进行操作

1>:移动数据最终都是在frameworks/opt/telephony-msim/frameworks/src/com/codeaurora/internal/telephony/MSimPhoneFactory.java里面被赋值的。

Settings.Global.putInt(sContext.getContentResolver(),Settings.Global.MOBILE_DATA, enabled ? 1 : 0);

Rlog.d(LOG_TAG, "set mobile_data: " + enabled);

2>:Log.w("quickSettingsModel ",new NullPointerException());

3>:adb logcat -b radio -v time >d:radio.txt

 

二、

设置里的移动数据开关:

packages/apps/Settings/Settings。java:

mDataEnabler = new DataEnabler(context, new Switch(context));

通过DataEnabler.java来实现,在其里监听状态并改变:

private OnCheckedChangeListener mDataEnabledListener= new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

mMobileDataEnabled = mConnService.getMobileDataEnabled();

if(mMobileDataEnabled != mSwitch.isChecked()){

mConnService.setMobileDataEnabled(isChecked);

for (int i = 0; i < MAX_PHONE_COUNT_TRI_SIM;i++){

Settings.Global.putInt(mContext.getContentResolver(),

Settings.Global.MOBILE_DATA + i, isChecked ? 1 : 0);

}

}

}

};

另外,插入SIM卡后设置里的“流量使用情况”对应的activity:DataUsageSummary.java,其也有移动数据开关赋值处理;类似设置的“移动数据”switch