【问题标题】:Xamarin.Forms - Set WiFi Subnet Mask on Android DeviceXamarin.Forms - 在 Android 设备上设置 WiFi 子网掩码
【发布时间】:2019-06-13 20:27:21
【问题描述】:

我遇到了一个问题,我的 Android 应用程序无法使用 TcpClient 类进行传出连接(问题位于 here)。在调试和进行进一步研究时,我发现我的 Android 设备(API 级别 22)在连接到我的 WiFi 网络时收到了0.0.0.0 的子网掩码。我的 DHCP 服务器配置为使用255.255.255.0,所以我相信这种差异可能是我的另一个问题的根源。这是我的代码:

//Connect to the WiFi network
int id = WiFiManager.AddNetwork(new WifiConfiguration()
{
    Ssid = $"\"{ssid}\"",
    PreSharedKey = $"\"{password}\""
});
WiFiManager.EnableNetwork(id, true);
WiFiManager.Reconnect();

//Retrieve subnet mask (for debugging) 
int subnet_mask = WiFiManager.DhcpInfo.Netmask;

subnet_mask 返回0DhcpInfo 类的格式化版本显示:

{ipaddr 10.0.0.15 gateway 10.0.0.0 netmask 0.0.0.0 dns1 10.0.0.0 dns2 0.0.0.0 DHCP server
10.0.0.0 lease 43200 seconds}

在这种情况下,有什么方法可以在 Android API 中手动更改子网掩码(或“网络掩码”)?我尝试使用静态 IP 配置,如图所示 @987654322 @,但在 API 级别 17 中已弃用这些设置。我也尝试手动设置 DhcpInfo.Netmask 属性,但它需要 int。我根据this answer计算了一个,但是它太大了,变成了uint。最后,我查看了各种类,包括Android.Net.Wifi.WifiManager,看看是否有办法更改网络掩码。我什么都没找到,但我可能只是找错地方了。

非常感谢任何帮助!

更新:

出于安全原因,标准 Android API 似乎无法做到这一点。 但是,Android NDK 是否可以更改子网掩码? 我了解它提供了对设备的较低级别的访问权限,并且我不需要将这个应用程序放在应用商店(它是为我的仅使用)。

【问题讨论】:

    标签: android xamarin.forms dhcp subnet netmask


    【解决方案1】:

    出于安全原因,Android 操作系统可能不允许您执行此操作。

    我知道作为用户,我不希望应用更改我的网络配置。

    过去似乎可以做到这一点:https://stackoverflow.com/a/7142316/2913599 但该 API 在 API 级别 17 中已过时/弃用:https://developer.android.com/reference/android/provider/Settings.System.html#WIFI_STATIC_DNS1

    文档说要改用 WifiManager,但出于安全原因,该 API 不允许再次更改 ip、dns、网关。

    如果您需要更改这些设置,也许您可​​以为用户提供一个说明页面,以便他们自己更改。

    【讨论】:

    • 我很抱歉没有回复@Leon。是否可以使用 Android NDK 执行此操作?如果是这样,我将如何开始将它与 Xamarin.Forms.Android 一起使用?我听说它允许更多低级访问,并且无法在应用商店上发布它的警告对我来说不是问题(该应用仅供我使用)。
    • 我对 Android NDK 不熟悉。所以我不给你是或否的结果,但是 Xamarin.Forms.Android 没有实现它。Xamarin.Forms.Android 只是用于开发 android App。
    • 好的。如果其他人对此情况有意见,我将暂缓选择此作为答案。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2023-04-03
    • 2021-10-27
    • 2013-10-25
    • 2019-10-09
    相关资源
    最近更新 更多