Android无线热点默认属性修改

问题描述:
之前遇到需求是根据设备的mac来修改Android设备的默认热点名称、默认密码,且用户恢复出厂设置后还是修改后的。
解决方案:
通过在csdn上面搜索后,发现两种方法
1.参考https://blog.csdn.net/weixin_39821531/article/details/81252145修改默认的 value,如下:
AndroidAP
但是不难发现这里并不能满足需求
2.参考https://blog.csdn.net/tony_anmoo/article/details/18708879,修改相应文件
frameworks/base/wifi/java/android/net/wifi/WifiApConfigStore.java中的setDefaultApConfiguration()方法,代码如下:

 /* Generate a default WPA2 based configuration with a random password.
       We are changing the Wifi Ap configuration storage from secure settings to a
       flat file accessible only by the system. A WPA2 based default configuration
       will keep the device secure after the update */
    private void setDefaultApConfiguration() {
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = mContext.getString(R.string.wifi_tether_configure_ssid_default);
        config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
        String randomUUID = UUID.randomUUID().toString();
        //first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
        config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9,13);
        config.channel = 6;
        sendMessage(WifiStateMachine.CMD_SET_AP_CONFIG, config);
    }

修改后为

/* Generate a default WPA2 based configuration with a random password.
       We are changing the Wifi Ap configuration storage from secure settings to a
       flat file accessible only by the system. A WPA2 based default configuration
       will keep the device secure after the update */
    private void setDefaultApConfiguration() {
        WifiConfiguration config = new WifiConfiguration();		 
		String mac_id = SystemProperties.get("persist.sys.hwconfig.mac","00:00:00:00:00:00");
		String new_mac = mac_id.replaceAll(":","");
		String sec_mac = new_mac.substring(6);
		String hot_ap = "HBSX-"+sec_mac;
        //config.SSID = mContext.getString(R.string.wifi_tether_configure_ssid_default);
		config.SSID = hot_ap;
        config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
        String randomUUID = UUID.randomUUID().toString();
        //first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
        //config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9,13);
		config.preSharedKey = "00000000";
        config.channel = 6;
        sendMessage(WifiStateMachine.CMD_SET_AP_CONFIG, config);
    }

修改之后验证发现完全符合要求。

你可能感兴趣的:(Andorid)