Android Force OkHttp请求移动网络

时间:2017-08-24 17:37:45

标签: android networking retrofit retrofit2 okhttp

是一种迫使OkHttp通过蜂窝网络提出请求的方法吗?

我的应用有某些必须通过蜂窝网络发送的请求(3G,LTE,4G,不是Wifi )。我正在使用Retrofit和OkHttp来处理所有其他网络请求,因此我也想将它用于这些请求。看起来ConnectivityManger.registerDefaultNetworkCallback()可以提供帮助但只支持API 21+。我想要一个API 19 +的解决方案。

2 个答案:

答案 0 :(得分:2)

假设API 21 +,

OkHttpClient

当网络消失并返回时,您将不得不重建ConnectivityManager.getActiveNetworkInfo(),但这是可行的。您可以通过这种方式明确使用非默认网络(即使连接到默认设备并默认为WiFi,某些设备也可以保持数据连接。)

在API 19上,您可以检查BroadcastReceiver,如果类型为WiFi则拒绝操作,并再次从Autodesk.Viewing.Private.ContextMenu注册android.net.conn.CONNECTIVITY_CHANGE进行检查。

答案 1 :(得分:0)

由于您需要的API低于21,因此您可以尝试使用ConnectivityManager

您有setNetworkPreference(type)这种方法,其中typeConnectivityManager.TYPE_WIFIConnectivityManager.TYPE_MOBILE。在你的情况下是TYPE_MOBILE

此方法在API 21+中已弃用,您应检查当前的Android版本。

请注意,此通话需要android.Manifest.permission.CHANGE_NETWORK_STATE权限。