我可以设置WiFi的ssid吗?

时间:2018-06-24 02:12:45

标签: android

我可以使用以下代码获取Wifi的名称,希望以编程方式选择WiFi,该怎么办?

似乎wifiInfo.ssid是val,无法分配!

我将所需的权限设置为

<!-- in AndroidManifest.xml -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

然后输入代码

<!-- in Activity class -->
var wifiManager = mContext.applicationContext.getSystemService(WIFI_SERVICE) as WifiManager
var wifiInfo = wifiManager.connectionInfo

var name=wifiInfo.ssid
var isEnabled=wifiManager.isWifiEnabled

wifiInfo.ssid="MyNewWifi"  //It cause error

顺便说一句,

我已经读过文章 How do I connect to a specific Wi-Fi network in Android programmatically?

当我重新连接WIFI时,似乎需要在上面的代码中提供密码。

在我看来,如果我已成功连接到wifi,密码将被保存到配置中,如果希望再次重新连接wifi,我希望不需要在密码中提供密码,该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要创建这样的Wifi配置。

String networkSSID = "testwifi";
String networkPass = "password";

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";
conf.preSharedKey = "\""+ networkPass +"\"";
WifiManager wifiManager = 

(WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.addNetwork(conf);

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
         wifiManager.disconnect();
         wifiManager.enableNetwork(i.networkId, true);
         wifiManager.reconnect();               

         break;
    }           
 }

此代码应适用于WPA安全设置。

参考: Another similar question link