机顶盒Launcher wifi模块隐藏wifi连接不上问题解决方案

首先说一下,这个问题最终解决方式很简单,但是中间过程却是纠结了很久,总结一下原因,一方面要排除硬件问题,另外也要注意是否是SDK以及底层问题,昨天记得用同样的方法测试过(可能还加了其他代码导致),不行,今天换了一台机器,然后重新整理代码push launcher到盒子 测试发现可以了。


解决方案:在创建WifiConfiguration 将其属性 hiddenSSID 设置为true即可。至此发现隐藏wifi和普通wifi连接过程也没啥不同的。


顺便总结一下 新增wifi 连接过程的代码:
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);


调用过程就是:
WifiConfiguration configuration = createWifiInfo(SSID, password, type);
addNetwork(configuration);
enableConfiguration(configuration.networkId);
wifiManager.saveConfiguration();


//创建wifi的配置信息
public WifiConfiguration createWifiInfo(String SSID, String Password, int Type) {
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";

WifiConfiguration tempConfig = this.isExsits(SSID);
if (tempConfig != null) {
wifiManager.removeNetwork(tempConfig.networkId);
}

if (Type == 0) // WIFICIPHER_NOPASS
{
// config.wepKeys[0] = "";
// config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
// config.wepTxKeyIndex = 0;
config.hiddenSSID = false;
config.status = WifiConfiguration.Status.ENABLED;
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.preSharedKey = null;
}
if (Type == 1) // WIFICIPHER_WEP
{
config.hiddenSSID = true;
config.wepKeys[0] = "\"" + Password + "\"";
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if (Type == 2) // WIFICIPHER_WPA
{
config.preSharedKey = "\"" + Password + "\"";
config.hiddenSSID = true;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.priority = 10000;
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.ENABLED;
}
return config;
}



private WifiConfiguration isExsits(String SSID)
{
List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs)
{
if (existingConfig.SSID.equals("\"" + SSID + "\""))
{
return existingConfig;
}
}
return null;
}


public void addNetwork(WifiConfiguration wcg)
{
int wcgID = wifiManager.addNetwork(wcg);
boolean b = wifiManager.enableNetwork(wcgID, true);
if (b)
{
wifiManager.reassociate();
wifiManager.reconnect();
}
}


public boolean enableConfiguration(int networkId)
{
return wifiManager.enableNetwork(networkId, true);
}


另外可能需要一些权限:
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />


    /data/misc/wifi/ cat wpa_supplicant.conf 查看盒子的wifi配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值