Android无线热点默认属性修改

本文介绍如何根据设备MAC修改Android设备的默认热点名称及密码,并确保即使恢复出厂设置也保持不变。通过修改源码中setDefaultApConfiguration()方法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
之前遇到需求是根据设备的mac来修改Android设备的默认热点名称、默认密码,且用户恢复出厂设置后还是修改后的。
解决方案:
通过在csdn上面搜索后,发现两种方法
1.参考https://blog.youkuaiyun.com/weixin_39821531/article/details/81252145修改默认的 value,如下:
AndroidAP
但是不难发现这里并不能满足需求
2.参考https://blog.youkuaiyun.com/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);
    }

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值