Platform: RK3288
OS: Android 5.1
diff --git a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java b/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
old mode 100644
new mode 100755
index cc5824e..49d371a
--- a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -353,6 +353,13 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
mWifiController.start();
+ int wifiap_on = SystemProperties.getInt("persist.sys.wifiapenable",0);
+ if(wifiap_on == 1) {
+ setWifiApEnabled(getWifiApConfiguration(),true);
+ } else if (wifiEnabled){
+ setWifiEnabled(wifiEnabled);
+ }
+
// If we are already disabled (could be due to airplane mode), avoid changing persist
// state here
if (wifiEnabled) setWifiEnabled(wifiEnabled);
@@ -725,6 +732,12 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
}
// null wifiConfig is a meaningful input for CMD_SET_AP
if (wifiConfig == null || wifiConfig.isValid()) {
+ if(enabled){
+ SystemProperties.set("persist.sys.wifiapenable","1");
+ }else {
+ SystemProperties.set("persist.sys.wifiapenable","0");
+ }
+
mWifiController.obtainMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig).sendToTarget();
} else {
Slog.e(TAG, "Invalid WifiConfiguration");
diff --git a/packages/apps/Settings/src/com/android/settings/TetherSettings.java b/packages/apps/Settings/src/com/android/settings/TetherSettings.java
old mode 100644
new mode 100755
index e33ddb0..5a34a4a
--- a/packages/apps/Settings/src/com/android/settings/TetherSettings.java
+++ b/packages/apps/Settings/src/com/android/settings/TetherSettings.java
@@ -40,6 +40,7 @@ import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.widget.TextView;
+import android.util.Log;
import com.android.settings.wifi.WifiApDialog;
import com.android.settings.wifi.WifiApEnabler;
@@ -308,6 +309,15 @@ public class TetherSettings extends SettingsPreferenceFragment
activity.registerReceiver(mTetherChangeReceiver, filter);
if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
+ if(mEnableWifiAp != null)
+ {
+ if(SystemProperties.getInt("persist.sys.wifiapenable",0) == 1)
+ {
+ mEnableWifiAp.setChecked(true);
+ }else{
+ mEnableWifiAp.setChecked(false);
+ }
+ }
if (mWifiApEnabler != null) {
mEnableWifiAp.setOnPreferenceChangeListener(this);
mWifiApEnabler.resume();
@@ -454,8 +464,10 @@ public class TetherSettings extends SettingsPreferenceFragment
boolean enable = (Boolean) value;
if (enable) {
+ SystemProperties.set("persist.sys.wifiapenable","1");
startProvisioningIfNecessary(WIFI_TETHERING);
} else {
+ SystemProperties.set("persist.sys.wifiapenable","0");
if (isProvisioningNeeded(mProvisionApp)) {
TetherService.cancelRecheckAlarmIfNecessary(getActivity(), WIFI_TETHERING);
}
https://blog.csdn.net/weixin_39966398/article/details/103661656
Platform: RK3399
OS: Android 7.1.1
需求:开机默认打开wifi热点
diff --git a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java b/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
index 0f3e901..060563c 100644
--- a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -408,14 +408,21 @@ public class WifiServiceImpl extends IWifiManager.Stub {
public void checkAndStartWifi() {
/* Check if wi-fi needs to be enabled */
.....
.....
.....
// Adding optimizations of only receiving broadcasts when wifi is enabled
// can result in race conditions when apps toggle wifi in the background
// without active user involvement. Always receive broadcasts.
registerForBroadcasts();
registerForPackageOrUserRemoval();
mInIdleMode = mPowerManager.isDeviceIdleMode();
mWifiController.start();
+ int wifiap_on = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.WIFIAP_ON, 0);
+ if(wifiap_on == 1) {
+ setWifiApEnabled(getWifiApConfiguration(),true);
+ } else if (wifiEnabled){
+ setWifiEnabled(wifiEnabled);
+ }
}
public void setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled) {
enforceChangePermission();
ConnectivityManager.enforceTetherChangePermission(mContext);
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)) {
throw new SecurityException("DISALLOW_CONFIG_TETHERING is enabled for this user.");
}
// null wifiConfig is a meaningful input for CMD_SET_AP
if (wifiConfig == null || isValid(wifiConfig)) {
+ Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFIAP_ON, enabled ? 1 : 0);
mWifiController.obtainMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig).sendToTarget();
} else {
Slog.e(TAG, "Invalid WifiConfiguration");
}
}
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 20b95b9..545af52 100644
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2581,6 +2581,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
private void loadGlobalSettings(SQLiteDatabase db) {
......
......
loadBooleanSetting(stmt, Settings.Global.AIRPLANE_MODE_ON,
R.bool.def_airplane_mode_on);
+ loadBooleanSetting(stmt, Settings.Global.WIFIAP_ON,
+ R.bool.def_wifiap_on);
+
loadBooleanSetting(stmt, Settings.Global.THEATER_MODE_ON,
R.bool.def_theater_mode_on);
diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index a2e0012..3cc42eb 100644
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -7,4 +7,7 @@
+ <!--if true while boot_completed will start wifiap on -->
+ <bool name="def_wifiap_on">true</bool>
diff --git a/frameworks/base/core/java/android/provider/Settings.java b/frameworks/base/core/java/android/provider/Settings.java
index d8e8e45..82a50f3 100755
--- a/frameworks/base/core/java/android/provider/Settings.java
+++ b/frameworks/base/core/java/android/provider/Settings.java
@@ -4249,7 +4249,7 @@ public final class Settings {
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
+ MOVED_TO_GLOBAL.add(Settings.Global.WIFIAP_ON);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUSPEND_OPTIMIZATIONS_ENABLED);
MOVED_TO_GLOBAL.add(Settings.Global.WIFI_VERBOSE_LOGGING_ENABLED);
@@ -7764,7 +7764,7 @@ public final class Settings {
/**
* Settings to allow BLE scans to be enabled even when Bluetooth is turned off for
* connectivity.
* @hide
*/
public static final String BLE_SCAN_ALWAYS_AVAILABLE =
"ble_scan_always_enabled";
+ /**
+ * Used to save the WifiAP_ON State
+ * @hide
+ */
+ public static final String WIFIAP_ON = "wifiap_on";