我一直在运行 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/