是一种迫使OkHttp通过蜂窝网络提出请求的方法吗?
我的应用有某些必须通过蜂窝网络发送的请求(3G,LTE,4G,不是Wifi )。我正在使用Retrofit和OkHttp来处理所有其他网络请求,因此我也想将它用于这些请求。看起来ConnectivityManger.registerDefaultNetworkCallback()
可以提供帮助但只支持API 21+。我想要一个API 19 +的解决方案。
答案 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)
这种方法,其中type
是ConnectivityManager.TYPE_WIFI
或ConnectivityManager.TYPE_MOBILE
。在你的情况下是TYPE_MOBILE
。
此方法在API 21+中已弃用,您应检查当前的Android版本。
请注意,此通话需要android.Manifest.permission.CHANGE_NETWORK_STATE
权限。