目前判断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);
} } 然后,在systemServer.java里搜索wifi.checkAndStartWifi(), 可以找见它在ServerThread的run里,将wifi.checkAndStartWifi()替换成wifi.checkAndStartSoftAp(),然后,编译测试。
注:由于wifi和便携式热点是不能同时开启的,所以,若安装类似gms包这种默认会开启wifi的apk就会失败,需要请客户自行评估。