当WiFi和移动设备可用时,强制WiFi发送数据

时间:2012-08-10 09:03:48

标签: android android-networking

在我的应用程序中,我只有在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);
}

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)


默认情况下,当您同时通过wifi传输这两个数据时,我的体验。但是,如果您想要反之亦然,这种方法可以帮助您 setNetworkPreference

答案 2 :(得分:0)

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

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