我正在使用平板电脑设备上的Xamarin.android应用程序进行工作,并正在努力构建一个活动,该活动能够连接到任何可用的WiFi网络,并为每个可用的静态IPS设置单独的静态IP他们在与设备通信时。
到目前为止,我最接近解决方案的是Android.Net.Wifi.WifiManager.ConnectionInfo.IpAddress
,但这只是一个GETER,而与当前连接的 WiFi网络:
public virtual int IpAddress { get; }
这根本可能吗?谢谢!
用于获取可用WiFi网络的列表,您可以使用android.net.wifi.wifimanager类的scanresults属性。例如:
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
,例如在这种情况下:如何配置静态IP地址,NetMask,网关,在Android 3.x或4.x上编程。
尽管在Xamarin中,默认的WifiConfiguration
是这样的:
{* id:-1 ssid:null bssid:null prio:0 Keymgmt:协议: 身份验证: PAIRWISECIPHERS: 集体工作: PSK: IP分配:未分配 代理设置:未分配 {linkAddresses:[]路由:[] dnsaddresses:[]域:nullmtu:0} }
但是,经过一些研究,我发现默认Android wificonfiguration.java中的ipAssignment
等字段在xamarin.android应用中不可用。我们不知道Xamarin.android如何封装其WifiConfiguration
。
我找不到更改其IP assignment
和Proxy settings
的方法,因此,除非我们知道Xamarin.android的WifiConfiguration
,否则我个人怀疑是否可以设置静态IP地址。