gpt4 book ai didi

android - 强制 HttpURLConnection 使用移动网络并回退到 WiFi

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:46 26 4
gpt4 key购买 nike

我的应用程序使用 HttpURLConnection 连接到我的 REST 服务。我记录错误并注意到偶尔会发生的情况是用户获得了 WiFi 连接但它有代理。

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

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

最佳答案

切换到移动网络:

一旦检测到代理,就会弹出一个对话框,告诉用户您的应用无法使用该网络,因此您要切换到移动网络。您可以使用 ConnectivityManager 类切换到移动网络。

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

完成后切换回默认设置:

cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE);

检测代理:

使用以下代码 fragment 检测代理

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

更新:

如果你不能显示一个对话框,至少发送一个状态栏 Notification 以便用户稍后知道网络切换。

关于android - 强制 HttpURLConnection 使用移动网络并回退到 WiFi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com