【问题标题】:Getting WiFi proxy settings in Android: ConnectivityManager.getDefaultProxy() is always null在 Android 中获取 WiFi 代理设置:ConnectivityManager.getDefaultProxy() 始终为空
【发布时间】:2020-10-22 02:07:20
【问题描述】:

我正在尝试获取 API 28 中的当前 WiFi HTTP 代理设置。

代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText editText1 = (EditText)findViewById(R.id.editText1);
        EditText editText2 = (EditText)findViewById(R.id.editText2);

        ConnectivityManager connectivityManager =
                (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
        ProxyInfo pi = connectivityManager.getDefaultProxy();
        editText1.setText(pi != null ? pi.getHost() : "null");

        WifiManager wifiManager =
                (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
        pi = wifiManager.getConfiguredNetworks().get(0).getHttpProxy();
        editText2.setText(pi != null ? pi.getHost() : "null");
    }
}

配置代理时输出以下内容:

第二个文本字段由过度弃用的代码填充:

为什么不推荐使用的代码有效,但不推荐使用的代码无效?

我检查了一个旧的类似线程Getting WiFi proxy settings in Android,但它的建议太过时了,我无法使用外部库(此外,该线程中提到的库不再存在)。

PS:这里是wifi设置中的代理配置:

【问题讨论】:

    标签: java android


    【解决方案1】:

    问题在于当系统提示“已连接,无互联网”时,WiFi 连接上出现的十字图标。代理可以访问,互联网可以正常工作,但 Android 操作系统认为连接已断开。要解决此问题,请从 WiFi 设置中删除代理设置,保存更改,重新连接 wifi,然后再次添加代理设置。之后,代理设置可以通过第一种方法通过getDefaultProxy方法成功读取。但一段时间后,它将恢复为“无互联网”。配置调试代理时,Android OS 似乎不相信互联网已连接。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2017-08-19
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多