android - Android 应用程序如何决定是否要使用网络代理

标签 android networking proxy wifi android-3.0-honeycomb

我一直在运行 Android 3.2 的摩托罗拉 Xoom 上使用 wifi 代理设置进行一些测试。所以首先,与 2.x 版本相比,这是向前迈出的一大步。现在如果你设置代理,大多数应用程序会自动获取它(在 2.x 中,只有内置浏览器使用它)。所以我尝试了 yahoo finance、bloomberg 等,它们都通过了代理。我没有得到的是一些浏览器,如 firefox、Opera,不会通过代理。知道他们是怎么做到的。基本上在我的应用程序中,我如何决定是要使用代理还是尝试直接连接。根据我的测试,如果我们不做任何特殊的事情,默认是使用代理。那么我需要做什么才能让我的应用绕过 Firefox/Opera 等代理?

谢谢!

最佳答案

在 API 版本 >=11(Android 3.1 及更高版本)的设备上,答案在这里:

Android's proxy confusing documentation resources

您可以简单地从 ProxySelector 类调用 getDefault() 方法并获取 ProxySelector 的默认 Android 实现。

ProxySelector defaultProxySelector = ProxySelector.getDefault();
Proxy proxy = null;
List<Proxy> proxyList = defaultProxySelector.select(uri);
if (proxyList.size() > 0)
{
  proxy = proxyList.get(0);
  Log.d(TAG, "Current Proxy Configuration: " + proxy.toString());
}

我认为某些 Android 应用程序(您说的是 Opera 和 Firefox)根本不执行此检查,而是实现了一些不关心系统如何工作的 native 代理处理。

关于android - Android 应用程序如何决定是否要使用网络代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544582/

相关文章:

android - 如何使用dom和saxparser解析android中的本地xml文件?

android - CSS 硬件加速效果不佳

javascript - 使用 Android 版 wikiitude SDK 获取用户位置

networking - Google 的 QUIC 有独立的库吗?

c# - .Net 互联网代理

windows - Windows 7 命令提示符的代理设置

docker - 根据用户名转发SSH连接

android - 在 ListView 中绑定(bind) fragment

java - 如何从 InetAddress.getLocalHost() 获取 IPv6

Linux命令验证每台机器连接的是哪个交换机