【问题标题】:Undo setting proxy via Settings.Global in Android在 Android 中通过 Settings.Global 撤消设置代理
【发布时间】:2015-10-26 18:09:19
【问题描述】:

我正在编写系统应用程序,它通过设置全局 http 代理

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

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

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

有什么想法吗?
提前致谢

【问题讨论】:

    标签: android proxy


    【解决方案1】:

    这样使用

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

    注意'Settings.Secure.putString()'

    【讨论】:

      【解决方案2】:

      我知道这是一个老问题,但我在撤消代理黑客方面花了很多时间,所以我想我会分享。

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

      问题是一旦我将我的应用程序与

      一起使用
      Settings.Secure.putString(getContentResolver(), Settings.Secure.HTTP_PROXY, "127.0.0.1:8007");
      

      无论我尝试什么(null,空白,“NONE”),它都不会让我将其设置回默认值(无代理),基本上如果我没有通过代理连接它就不会与外部对话世界。即使重启后。

      我找到的解决方案:

      这些设置存储在 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"; 
      

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

      【讨论】:

        【解决方案3】:

        安德鲁斯回答有效,但仅适用于有根设备,这是我针对非根设备的解决方案。

        我使用以下命令添加了代理:

        adb shell settings put global http_proxy <ip>:<port>
        

        更新:要删除它,您可以使用以下命令(感谢 Rohit Patel 提供):

        adb shell settings put global http_proxy :0 
        

        为了删除它,我使用了以下命令:

        adb shell settings delete global http_proxy
        adb shell settings delete global global_http_proxy_host
        adb shell settings delete global global_http_proxy_port
        

        重启设备就可以了

        【讨论】:

        • 效果很好!!谢谢:)
        • 非常感谢。必须做很多谷歌才能找到正确的解决方案来重置由 adb 命令更改的代理设置。工作得很好。 !
        • android 4.4 中只有两个选项 put&get
        • 有没有办法实时撤消代理,无需重启?添加代理是实时发生的,但不会删除它。
        • 它是否支持代理凭据?是否可以使用 SOCKS 代理而不是 HTTP 代理?否则,我们将不得不通过将上游代理与其他代理一起使用来使用变通方法。
        【解决方案4】:

        以下是删除代理设置的常规命令,无需重启设备即可应用。您可以在脚本或应用程序中相对使用它。

        adb shell settings put global http_proxy :0
        

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

        【讨论】:

          【解决方案5】:

          另一种方法,而不是使用 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")
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-07-10
            • 1970-01-01
            • 1970-01-01
            • 2016-04-10
            • 1970-01-01
            • 2016-08-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多