我正在运行Android Kit-Kat 4.4.2。我已经能够使用data / data / com.android.providers.settings / databases中的settings.db数据库配置全局代理,我已经使用adb手动修改了这个数据库。为此,我做了以下事情:
代理有效。作为参考,我使用Firefox for Android版本44.0.1来测试它的工作原理。只要network.proxy.type设置的值为5,就会尊重此全局代理(请参阅this Mozilla knowledge-base)。
当我在global_http_proxy_exclusion_list中输入一个URL并测试它是否被排除时,我仍然通过代理路由。我想也许我需要重启设备才能进行更新,但是在重新启动时,global_http_proxy_exclusion_list会重置,以便它再次为空。
我尝试过对此属性进行网络搜索,但我只是获取源代码的链接,这在此实例中没有帮助。
我还发现this StackOverflow question以编程方式配置代理排除列表。如果这是配置这样一个列表的唯一方法,那么它会做,但我宁愿避免它,如果可以的话。
我已经能够使用network.proxy.no_proxies_on配置选项(并将network.proxy.type设置为1)使用代理排除列表专门配置Firefox,但是想知道是否有办法设置全球代理。
使用Android应用程序是解决此问题的可接受方案。我已经安装了ProxyDroid并配置了代理,但据我所知,这没有任何作用(或者Firefox只是不尊重代理)。 (对于任何可能认为使用ProxyDroid的人来说,这是正确的答案:我已根植我的设备但仍然从ProxyDroid获取消息,说明需要有根设备。这是正常的吗?)
我是否有办法以非编程方式在Android中配置代理排除列表?
答案 0 :(得分:1)
为了使global_http_proxy_exclusion值保持不变,我认为您需要删除旧的http_proxy条目。 (换句话说,只设置global_http_proxy_ *键。)
ConnectivityService实现了一个handleDeprecatedGlobalHttpProxy()方法,该方法在生成一个持久保存到global_http_proxy_ *键的新ProxyInfo之前查看旧的http_proxy密钥。此方法生成的ProxyInfo始终使用空白排除列表,我认为这是覆盖Android启动后设置的值。
运行棒棒糖,我的排除列表在重新启动后保留,当我删除了http_proxy并且只依赖于全局设置。