2

在我的应用程序中,我有数据,只有当 wi-fi 可用时我才想发送这些数据。我可以检查 wi-fi 或移动数据是否可用,但是当 wi-fi 和移动数据都处于活动状态时,我该如何处理?在这种情况下如何强制使用 wi-fi?

private static void logNetworkState() {
    ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo mobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    String logStr = "Network state: ";

    if (wifi.isAvailable()) {
        logStr+= " wi-fi avalibale;";
    }
    if (mobile.isAvailable()) {
        logStr+= " mobile network avaliable";
    }
    log(logStr);
}
4

3 回答 3

0

如果默认情况下两者都处于活动状态,则数据通过 WI-FI 路由。但这又取决于底层网络实现。

通常我使用connectivymanager.startusingnetworkfeature()来强制它使用移动数据。同样,上述方法的参数是特定于实现的

于 2012-08-10T09:19:08.877 回答
0


默认情况下,当您拥有两个数据时,我的经验仅通过 wifi 传输。但是,如果您想反之,则此方法可能会帮助您 setNetworkPreference

于 2012-08-10T10:55:04.347 回答
0

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

检查此博客文章:https ://android-developers.googleblog.com/2016/07/connecting-your-app-to-wi-fi-device.html

于 2018-03-06T01:09:18.083 回答