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

时间:2016-09-03 22:25:56

标签: android networking android-wifi

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

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

2 个答案:

答案 0 :(得分:7)

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

  

要将您应用中的所有网络请求定向到外部Wi-Fi设备,请在Lollipop设备上拨打ConnectivityManager#setProcessDefaultNetwork,然后在Marshmallow上拨打ConnectivityManager#bindProcessToNetwork,这是直接替换API。

答案 1 :(得分:0)

使用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" />