通过Android中的Settings.Global撤消设置代理

时间:2015-08-04 11:02:41

标签: android proxy

我正在编写系统应用程序,它通过

设置全局http代理
Settings.Global.putString(getContentResolver(), Settings.Global.HTTP_PROXY, "127.0.0.1");

如何恢复此更改?
这不起作用:

Settings.Global.putString(getContentResolver(), Settings.Global.HTTP_PROXY, null);

有什么想法吗?
提前致谢

4 个答案:

答案 0 :(得分:9)

以下是删除命令设置的常规命令,该设置将在不重启设备的情况下应用。您可以在脚本或应用程序中相对使用它。

adb shell settings put global http_proxy :0

您不需要运行所有这三个命令。它仅适用于上面的一个命令。所有代理设置将立即删除。

答案 1 :(得分:2)

我知道这是一个老问题,但我有一段时间撤消我的代理黑客,所以我想我会分享。

我使用ADB将权限传递给设备,这样我就可以使用自己的自定义应用程序将值更改为我的代理设置。

问题是我使用

后的应用程序
Settings.Secure.putString(getContentResolver(), Settings.Secure.HTTP_PROXY, "127.0.0.1:8007");

如果我没有通过连接,我不会让我将其设置回默认值(无代理),无论我尝试了什么(空,空白,#34;无#34;)代理它不会与外界交谈。即使重启后。

我发现的解决方案:

这些设置存储在SQL数据库中,因此当手机重新启动时,它会应用它们。您只需要进入数据库并从表中删除这些行。我做了什么:

~user$ adb shell
shell@cinco:/ $ su -

仅供参考...不确定您是否需要超级用户,但它不会对您造成伤害。 。

root@cinco:/ $ sqlite3 /data/data/com.android.providers.settings/databases/settings.db

您可以通过以下方式查看全局表格中的完整列表:

sqlite> select * from global;
在列表中

你应该能够看到你为http_proxy,global_http_proxy_host和global_http_proxy_port写的值,也许你知道设置这些值的神奇值,以便它正常工作,但我不...我的解决方案,只需删除它们:

sqlite> delete from global where name="global_http_proxy_host";
sqlite> delete from global where name="global_http_proxy_port";
sqlite> delete from global where name="http_proxy"; 

重启手机,就像魔术一样,没有更多的代理,我得到了互联网!

答案 2 :(得分:1)

像这样使用

$(document).ready()

注意Settings.Secure.putString(getContentResolver(), Settings.Secure.HTTP_PROXY, "127.0.0.1:8007");

答案 3 :(得分:0)

另一种方法,而不是使用root命令(尽管您仍然需要root)并使用

的方法
Settings.Global.putString(getContentResolver(), Settings.Global.HTTP_PROXY, "127.0.0.1");

是将值设置为 :0 使其看起来像这样

Settings.Global.putString(activity!!.contentResolver, Settings.Global.HTTP_PROXY, ":0")

我也不必重新启动以使更改生效