前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
优快云:http://www.youkuaiyun.com
雨季o莫忧离:http://blog.youkuaiyun.com/luckkof
正文
目前判断Wifi开机后是否需要的自动开启实现是在wifiService.java的checkAndStartWifi() 函数里,类似的,可以参照wifi在wifiService.java里添加一下如下函数:
public void checkAndStartSoftAp() {
mWifiStateMachine.autoConnectInit();
boolean isAirplaneModeOn = isAirplaneModeOn();
int persistedWifiState = getPersistedWifiState();
SXlog.d(TAG, "isAirplaneModeOn:" + isAirplaneModeOn + ", getPersistedWifiState:" + persistedWifiState);
mAirplaneModeOn.set(isAirplaneModeOn);
mPersistWifiState.set(persistedWifiState);
if (mWifiStateMachine.hasCustomizedAutoConnect() && mAirplaneModeOn.get()) { //AirplaneMode下不打开SoftAp,客户也可以看情况不限制
SXlog.i(TAG, "Don't enable softAp when airplane mode is on for customization.");
} else {
Slog.i(TAG, "WifiService starting up with softAp");
setWifiApEnabled(null, true);
}
public void checkAndStartSoftAp() {
mWifiStateMachine.autoConnectInit();
boolean isAirplaneModeOn = isAirplaneModeOn();
int persistedWifiState = getPersistedWifiState();
SXlog.d(TAG, "isAirplaneModeOn:" + isAirplaneModeOn + ", getPersistedWifiState:" + persistedWifiState);
mAirplaneModeOn.set(isAirplaneModeOn);
mPersistWifiState.set(persistedWifiState);
if (mWifiStateMachine.hasCustomizedAutoConnect() && mAirplaneModeOn.get()) { //AirplaneMode下不打开SoftAp,客户也可以看情况不限制
SXlog.i(TAG, "Don't enable softAp when airplane mode is on for customization.");
} else {
Slog.i(TAG, "WifiService starting up with softAp");
setWifiApEnabled(null, true);
}
}
然后,在systemServer.java里搜索wifi.checkAndStartWifi(), 可以找见它在ServerThread的run里,将wifi.checkAndStartWifi()替换成wifi.checkAndStartSoftAp(),然后,编译测试。
注:由于wifi和便携式热点是不能同时开启的,所以,若安装类似gms包这种默认会开启wifi的apk就会失败,需要请客户自行评估。