android 9.0 修改默认流量警告值

/frameworks/base/core/res/res/values/config.xml

config_networkPolicyDefaultWarning  改成需要的默认值 

NetworkPolicyManagerService.java

       经过调试笔者确定mNetworkPolicy是在CONNECTIVITY_ACTION_IMMEDIATE广播接收器中实现初始化的。具体的动作都在ensureActiveMobilePolicyLocked()方法中完成的。当设备第一次运行时mNetworkPolicy没有值所以mobileDefined为false,此时将进行初始化,即将com.android.internal.R.integer.config_networkPolicyDefaultWarning 的值作为流量警告字节,将LIMIT_DISABLED(-1)作为流量限制字节,创建一个NetworkPolicy对象,并将其插入mNetworkPolicy从而完成初始化。

 

       以上大概介绍了一下SIM卡的流量限制字节和流量警告字节的初始值是如何初始化的。下面对整个流程总结一下

首先设备启动后会启动NetworkPolicyManagerService服务,并且调用该服务的systemReady()方法,在其中调用readPolicyLocked(),如果存在/data/system/netpolicy.xml,这个方法会读取这个文件来初始化mNetworkPolicy, 否则mNetworkPolicy为空;后面如果有有效sim卡插入,则执行上面的步骤4来进一步初始化;然后当进入设定的流量使用情况界面时,在onCreate中创建NetworkPolicyEditor对象mPolicyEditor后调用其read()方法来初始化该对象的容器类mPolicies(依赖NetworkPolicyManagerService服务的mNetworkPolicy容器类),当画面load完后在启动另一个线程进一步初始化(开始从上面的步骤1执行)

 

       以上,大概就是限制流量字节数和警告流量字节数的初始化流程。最后强调三点:

 

1. com.android.internal.R.integer.config_networkPolicyDefaultWarning中设置的是默认警告流量字节数(MB);

 

2. 无论用户如何修改,最终的policy信息(包括修改后的限制流量字节数和警告流量字节数)都将保存在/data/system/netpolicy.xml文件中;

 

3. 系统仅对默认的SIM卡来初始化,例如设备插入两张卡,并且第一次启动,则卡1的警告流量字节被初始化为com.android.internal.R.integer.config_networkPolicyDefaultWarning的值2G,卡2将被初始化为-1(disabled

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值