要获取可用 wifi 网络的列表,您可以使用 Android.Net.Wifi.WifiManager Class 的 ScanResults Property。例如:
var wifiManager = (WifiManager)GetSystemService(Context.WifiService);
//open wifi
if (!wifiManager.IsWifiEnabled)
wifiManager.SetWifiEnabled(true);
var wifiList = wifiManager.ScanResults;
为此,您需要在应用清单中启用所有与 wifi 相关的功能,例如:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
要设置静态 IP,没有开放的 API 可以完成这项工作。而像Android.Provider.Settings.System.WifiStaticGateway 这样的API 已经过时了,通常我们在传统的Java android 应用程序中使用反射来设置WifiConfiguration,比如在这种情况下:How to configue a static IP address, netmask, gateway programmatically on Android 3.x or 4.x。
虽然在xamarin这里,默认WifiConfiguration是这样的:
{* ID:-1 SSID:空 BSSID:空 PRIO:0
KeyMgmt:协议:
认证算法:
成对密码:
组密码:
PSK:
IP分配:未分配
代理设置:未分配
{LinkAddresses:[] 路由:[] DnsAddresses:[] 域:nullMTU:0}
}
但经过一些研究,我发现默认 Android WifiConfiguration.java 中的 ipAssignment 等字段在 xamarin.android 应用程序中不可用。我们不知道 Xamarin.Android 如何封装其WifiConfiguration。
我找不到更改其IP assignment 和Proxy settings 的方法,因此我个人怀疑设置静态IP 地址是否可以完成,除非我们知道Xamarin.Android 的WifiConfiguration 的样子。