我正在尝试通过使用WifiManager配置提供SSID和pass来连接到wifi网络。
基于这个线程解决方案:How do I connect to a specific Wi-Fi network in Android programmatically?
将调用重新连接方法。但没有发生任何事情(未连接)。
Android版本(6.0.1)有什么作用吗?如果是,那么如何在Android6上以编程方式执行网络连接?
发布于 2017-06-12 17:27:49
自从安卓棉花糖以来,你连接WiFi网络的方式发生了一些变化。以下代码将帮助您使用Android6.0或更低版本的you...If ...
public void connectToWifi(){
try{
WifiManager wifiManager = (WifiManager) super.getSystemService(android.content.Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wc.SSID = "\"NETWORK_NAME\"";
wc.preSharedKey = "\"PASSWORD\"";
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wifiManager.setWifiEnabled(true);
int netId = wifiManager.addNetwork(wc);
if (netId == -1) {
netId = getExistingNetworkId(wc.SSID);
}
wifiManager.disconnect();
wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
private int getExistingNetworkId(String SSID) {
WifiManager wifiManager = (WifiManager) super.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
if (configuredNetworks != null) {
for (WifiConfiguration existingConfig : configuredNetworks) {
if (existingConfig.SSID.equals(SSID)) {
return existingConfig.networkId;
}
}
}
return -1;
}并在清单文件中添加权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />发布于 2016-03-07 22:08:24
使用addNetwork添加wifi配置,然后使用enableNetwork连接到它。
WifiConfiguration wificonfiguration = new WifiConfiguration();
StringBuffer stringbuffer = new StringBuffer("\"");
stringbuffer.append((new StringBuilder(String.valueOf(HOTSPOT_NAME))).append("\"").toString());
wificonfiguration.SSID = stringbuffer.toString();
wificonfiguration.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
wificonfiguration.allowedAuthAlgorithms.set(0);
wificonfiguration.status = 2;
wificonfiguration.preSharedKey = "\"" + HOTSPOT_PASSWORD + "\"";
int networkId_ = wifi.addNetwork(wificonfiguration);
if(networkId>-1){
boolean status = wifi.enableNetwork(networkId_, true);
}对于棉花糖:您的应用程序现在只能更改WifiConfiguration对象的状态,前提是您创建了这些对象。您不能修改或删除用户或其他应用程序创建的WifiConfiguration对象。More info on Marshmallow
发布于 2016-08-24 20:56:25
自从安卓棒棒糖和棉花糖以来,你连接WiFi网络的方式发生了一些变化。有一篇很好的博客文章介绍了如何在棉花糖及更低版本上连接到WiFi网络
http://www.intentfilter.com/2016/08/programatically-connecting-to-wifi.html
这篇文章描述了一种场景,当WiFi网络没有连接,而您想要通过该网络发送流量时(类似于强制门户)。但它也解释了完整的过程,并适用于正常的网络。你不会找到确切的代码,但它仍然可以帮助你知道你卡在哪里了。
https://stackoverflow.com/questions/35539273
复制相似问题