gpt4 book ai didi

c# - 如何强制 XAMARIN 应用仅使用 WIFI

转载 作者:行者123 更新时间:2023-12-04 04:07:40 31 4
gpt4 key购买 nike

我正在 XAMARIN 中构建一个应用程序,它必须通过 wifi 连接到自定义设备并且该设备没有互联网连接。所以我的应用程序总是希望在移动数据上工作,并且永远不会与设备通信。无论如何强制该应用仅使用 WIFI 而从不使用移动数据?我想我不是唯一遇到这个问题的人,因为我看过一些关于这个的帖子,但没有一个是针对 xamarin 的。

编辑:我发现如果我让应用程序运行大约 50 秒,那么它将使用移动数据的 wifi。这是由于超时吗?如果是这样,我可以缩短超时时间吗?

最佳答案

经过一番努力,我找到了解决方案。使用此代码创建一个类:

using Android.Content;
using Android.Net;

namespace Project.Communication
{
class ForceNetworkType
{
public static Context _context = Android.App.Application.Context;

/// <summary>
/// Forces the wifi over cellular
/// </summary>
public static void ForceWifiOverCellular()
{
ConnectivityManager connection_manager = (ConnectivityManager)_context.GetSystemService(Context.ConnectivityService);

NetworkRequest.Builder request = new NetworkRequest.Builder();
request.AddTransportType(TransportType.Wifi);

var callback = new ConnectivityManager.NetworkCallback();
connection_manager.RegisterNetworkCallback(request.Build(), new CustomNetworkAvailableCallBack());
}

/// <summary>
/// Forces the cellular over wifi.
/// </summary>
public static void ForceCellularOverWifi()
{
ConnectivityManager connection_manager = (ConnectivityManager)_context.GetSystemService(Context.ConnectivityService);

NetworkRequest.Builder request = new NetworkRequest.Builder();
request.AddTransportType(TransportType.Cellular);

connection_manager.RegisterNetworkCallback(request.Build(), new CustomNetworkAvailableCallBack());
}
}

/// <summary>
/// Custom network available call back.
/// </summary>
public class CustomNetworkAvailableCallBack : ConnectivityManager.NetworkCallback
{
public static Context _context = Android.App.Application.Context;

ConnectivityManager connection_manager = (ConnectivityManager)_context.GetSystemService(Context.ConnectivityService);

public override void OnAvailable(Network network)
{
//ConnectivityManager.SetProcessDefaultNetwork(network); //deprecated (but works even in Android P)
connection_manager.BindProcessToNetwork(network); //this works in Android P
}
}
}

然后您只需在需要强制使用特定网络的地方使用:

ForceNetworkType.ForceWifiOverCellular();

强制使用移动数据连接 wifi。

关于c# - 如何强制 XAMARIN 应用仅使用 WIFI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62258323/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com