目前判斷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就會失敗,需要請客戶自行評估。