在我看来,Android上的代理主题存在很多令人困惑的资源。
首先,似乎已将Proxy class的所有方法都声明为已弃用,并建议:
“使用标准的java vm代理值来查找主机,端口和 排除清单。此调用忽略了排除列表。“
可以通过以下方式访问官方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);
只有OS提供商签署的应用程序才能写入安全设置。开发人员只能在读取模式下以下列方式访问这些设置:
Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY);
有人可以澄清这是否正确阅读如何将代理设置访问到Android? (至少它似乎工作)。如果这是正确的解释,为什么文档充满了错误?
答案 0 :(得分:2)
我不知道这是否是访问代理设置的“正确”方式,但这是您应该访问系统“安全设置”的唯一方法。
也许this也很有趣,看起来它会让事情变得更容易,特别是如果有Wifi代理(Android是否支持这样的东西?)。至少它看起来像各种Android版本的伟大抽象。
答案 1 :(得分:2)
要获取代理值,请按照您的方式访问系统属性;没有必要访问安全设置。如果您无法使用系统属性来读取通过普通设备UI进行的代理设置,则会出现问题。代理是按网络类型,因此APN和WiFi将具有单独的代理设置。