在我看来,关于 Android 上的代理主题有很多令人困惑的资源。
首先,似乎Proxy class的所有方法已被宣布弃用,建议:
"Use standard java vm proxy values to find the host, port and exclusion list. This call ignores the exclusion list."
官方java vm proxy values可以通过以下方式访问:
System.getProperty("http.proxyHost")
System.getProperty("http.proxyPort")
System.getProperty("http.nonProxyHosts")
ProxySelector class 的文档似乎证实了这一点.
但是在真实设备或模拟器上尝试时,这些值在我看来总是空的。查看隐藏ProxySelector activity的Android源代码后, 似乎代理以以下方式保存到系统的安全设置中:
Settings.Secure.putString(res, Settings.Secure.HTTP_PROXY, hostname);
并且只有操作系统提供商签名的应用程序才能写入安全设置。开发人员只能通过以下方式在读取模式下访问这些设置:
Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY);
有人可以澄清这是否是关于如何访问 Android 的代理设置的正确解读? (至少它似乎有效)。如果这是正确的解释,为什么文档中错误百出?
最佳答案
要获取代理值,访问系统属性应该可行;没有必要访问安全设置。如果您无法使用系统属性来读取通过普通设备 UI 进行的代理设置,则说明存在问题。代理是按网络类型划分的,因此 APN 和 WiFi 将具有单独的代理设置。
关于Android的proxy混淆文档资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332522/