android 默认打开数据网络设置,android系统开机向导无法启动数据进行上网

由于android系统开机向导界面比较特殊,会通过Settings.Global.DEVICE_PROVISIONED 属性来控制,刷完机第一次启启动此值会默认为0 ,开机向导结束后会设置为1,系统很多地方会根据此值来控制

opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java

opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java

DataEnabledSettings.java 中:

public boolean isProvisioning() {

return Settings.Global.getInt(mResolver, Settings.Global.DEVICE_PROVISIONED, 0) == 0;

}

/**

* In provisioning, we might want to have enable mobile data during provisioning. It depends

* on value of Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED which is set by

* setupwizard. It only matters if it's in provisioning stage.

* @return whether we are enabling userData during provisioning stage.

*/

public boolean isProvisioningDataEnabled() {

final String prov_property = SystemProperties.get("ro.com.android.prov_mobiledata",

"false");

boolean retVal = "true".equalsIgnoreCase(prov_property);

final int prov_mobile_data = Settings.Global.getInt(mResolver,

Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED,

retVal ? 1 : 0);

retVal = prov_mobile_data != 0;

log("getDataEnabled during provisioning retVal=" + retVal + " - (" + prov_property

+ ", " + prov_mobile_data + ")");

return retVal;

}

所以问题就比较简单了系统给开了个后门:直接在开机向导里第一个页面初始化Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED 值为 1

如:

/**

* 开机向导能界面能开启数据

*/

private void startData() {

Settings.Global.putInt(getContentResolver(), "device_provisioning_mobile_data", 1);

}

快速验证通过adb 命令:adb shell settings put global device_provisioning_mobile_data 1  直接设置到数据库中!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值