测试平台

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.javaindex 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.javaindex 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.xmlindex 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.javaindex 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";

更多相关文章

  1. Android(安卓)给 app默认权限(不弹窗申请权限)
  2. Android(安卓)Studio bug - attribute 'android:versionCode' no
  3. android 开机直接运行app并当做手机桌面
  4. Android获取设备唯一标识完美解决方案
  5. Android(安卓)屏幕设置
  6. 修复Android(安卓)App在开机后入口类被启动两次的bug
  7. 开机引导程序只执行一次的方法
  8. [RK3399][Android7.1] 调试笔记 --- 设置搜狗为开机默认输入法
  9. android 当系统存在多个Launcher时,如何设置开机自动进入默认的La

随机推荐

  1. Android gradle测试
  2. 分页控件1
  3. Android(安卓)Fragment嵌套导致的bug
  4. Android常用代码
  5. Android拷贝图片到指定文件路径
  6. android 安卓创建文件夹
  7. Android自动补全(二)
  8. android重新启动应用程序和重新启动系统
  9. android activity 单元测试总结
  10. android监听程序安装、卸载