Android - 强制网络请求通过 wifi 而不是移动网络

Android - force network requests go through wifi instead of mobile network

我有一个连接到硬件设备 Wi-Fi 热点的应用程序。 似乎 Android 通过其他网络(例如 3G/4G)而不是热点转发请求,因为我的热点没有互联网连接。

有没有办法强制网络流在 wifi 上工作? 我遇到过以下功能,但已弃用: https://developer.android.com/reference/android/net/ConnectivityManager.html#setNetworkPreference(int)

使用 ConnectivityManager 获取 Wifi 适配器的状态,然后您可以使用 NetworkInfo 检查它是否已连接甚至可用。

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (wifi.isConnected()) {
    // Continue with logic
}

如果他没有连接到 wifi 则不要继续,否则继续你的流程。

在您的 Manifest 文件中添加以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

根据 Connecting your App to a Wi-Fi Device blog post:

To direct all the network requests from your app to an external Wi-Fi device, call ConnectivityManager#setProcessDefaultNetwork on Lollipop devices, and on Marshmallow call ConnectivityManager#bindProcessToNetwork instead, which is a direct API replacement.