android – 强制HttpURLConnection使用移动网络和后退到WiFi

前端之家收集整理的这篇文章主要介绍了android – 强制HttpURLConnection使用移动网络和后退到WiFi前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序使用HttpURLConnection连接到我的REST服务.我记录错误,并注意到偶尔会发生什么是用户获取WiFi连接,但它有代理.

例如,那些机场无线网络会将您重定向到付费页面,然后让您使用互联网.我的代码不遵循重定向.

我真正想要的是忽略WiFi的存在,强制通过3G / 4G / E进行通信.如何在Android上执行此操作?

解决方法

切换到移动网络:

一旦您检测到代理,弹出一个对话框,告诉用户您的应用程序无法使用该网络,因此您正在切换到移动网络.您可以使用ConnectivityManagerclass切换到移动网络.

ConnectivityManager cm; 
cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);

并完成后切换回默认:

cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE);

检测代理:

使用以下代码片段检测代理

HttpURLConnection conn;
...
if (conn.getResponseCode() == HTTP_PROXY_AUTH){
    // You got a '407: Proxy authentication required' response.
    // Set the networkPreference() here and retry when 
    // network connection changes to TYPE_MOBILE.
}

你可以检查这篇文章,知道如何使用HttpURLConnection通过代理:How do I make HttpURLConnection use a proxy?

检测“网络变化”:

要知道如何检测“网络变化”,请看这篇文章
Android,How to handle change in network (from GPRS to Wi-fi and vice-versa) while polling for data

更新:

如果无法显示对话框,则至少会发送状态栏通知,以便用户稍后知道网络交换机.

猜你在找的Android相关文章