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