您可以通过编程设置静态IP,以供Xamarin Android中的WiFi网络列表



我正在使用平板电脑设备上的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 assignmentProxy settings的方法,因此,除非我们知道Xamarin.android的WifiConfiguration,否则我个人怀疑是否可以设置静态IP地址。

相关内容

最新更新