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轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...