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

这篇博客探讨了Android系统中开机向导如何通过Settings.Global.DEVICE_PROVISIONED属性控制用户界面,并详细介绍了DataEnabledSettings.java中的相关逻辑。在开机向导期间,系统允许设置Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED来开启移动数据。可以通过adb命令快速验证这个设置,直接影响用户在开机向导阶段的数据启用状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于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  直接设置到数据库中!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值