chi*_*ira 4 android wifi wifimanager android-6.0-marshmallow
我试图通过提供SSID并使用WifiManager配置传递来连接到wifi网络.
基于此线程解决方案: 如何以编程方式连接到Android中的特定Wi-Fi网络?
调用重新连接方法.但没有任何事情发生(没有连接).
是什么版本的Android版本(6.0.1)?如果是,那么如何在Android 6上以编程方式执行网络连接?
Sin*_*gam 11
自Android Marshmallow以来,关于如何连接到WiFi网络的一些事情发生了变化.以下代码将帮助您......如果您使用的是Android 6.0或低级版本......
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;
}
Run Code Online (Sandbox Code Playgroud)
并在Manifest文件中添加权限
<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" />
Run Code Online (Sandbox Code Playgroud)
小智 3
使用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);
}
Run Code Online (Sandbox Code Playgroud)
对于棉花糖:仅当您创建了 WifiConfiguration 对象时,您的应用程序现在才可以更改这些对象。您不得修改或删除用户或其他应用程序创建的 WifiConfiguration 对象。 有关棉花糖的更多信息
| 归档时间: |
|
| 查看次数: |
16997 次 |
| 最近记录: |