阻止Android请求使用移动数据

时间:2017-08-22 17:37:58

标签: android okhttp

我们正在通过Android应用程序进行大量上传。我们希望强制这些使用WiFi并且永远不要使用蜂窝网络,因此我们不会浪费用户的蜂窝数据计划。

目前我们正在使用ConnectivityManager检查连接状态,并确保它们已连接到WiFi。这种方法似乎已停止在Android 7上运行,因为有时即使连接了WiFi,操作系统也决定通过蜂窝网络发送请求。

在iOS上,我们可以使用allowsCellularAccess = false来明确地阻止这种情况。

在Android上是否有办法要求使用WiFi?理想情况下,在请求级别,而不是整个应用程序。我们不希望将整个应用限制为WiFi,只需大量上传。

我们正在使用OkHttpRequest,但愿意在需要时使用另一个lib。

1 个答案:

答案 0 :(得分:1)

来自文档developer.android.com

ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null) { // connected to the internet
        if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
            // connected to wifi
            // make large uploads here
            Log.d(LOG_TAG, " connected to WIFI");
        } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
            // connected to the mobile provider's data plan
            Log.d(LOG_TAG, " Connected to Mobile");
        }
    } else {
        Log.d(LOG_TAG, " No connection");
    }