我可以使用以下代码获取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,我希望不需要在密码中提供密码,该怎么办?
答案 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安全设置。