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.
我有一个连接到硬件设备 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.