我们正在通过Android应用程序进行大量上传。我们希望强制这些使用WiFi并且永远不要使用蜂窝网络,因此我们不会浪费用户的蜂窝数据计划。
目前我们正在使用ConnectivityManager检查连接状态,并确保它们已连接到WiFi。这种方法似乎已停止在Android 7上运行,因为有时即使连接了WiFi,操作系统也决定通过蜂窝网络发送请求。
在iOS上,我们可以使用allowsCellularAccess = false来明确地阻止这种情况。
在Android上是否有办法要求使用WiFi?理想情况下,在请求级别,而不是整个应用程序。我们不希望将整个应用限制为WiFi,只需大量上传。
我们正在使用OkHttpRequest,但愿意在需要时使用另一个lib。
答案 0 :(得分:1)
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");
}