微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android中获取WiFi代理设置

我正在尝试阅读WIFI代理设置

>代理主机
>代理端口
>代理用户(身份验证)
>代理密码(身份验证)

Android版本的设备2.X.X – 4.X.X没有任何成功.

呼叫:

String proxy = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.HTTP_PROXY);

始终返回null.

我还添加到我的Android清单:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

仍然会返回null.

还尝试过:

android.net.Proxy. getHost(Context ctx) – which is deprecated – returns the IP
android.net.Proxy. getPortt(Context ctx) – which is deprecated – returns always -1.

Java调用

System.getProperty("http.proxyHost");
System.getProperty("http.proxyCall");

也返回null.

是否有一个工作代码可以检索所有这些设置,或者至少部分来自所有Android版本的设备?

解决方法:

我找到了这个项目:Android Proxy Library
它提供了向后兼容的查询代理设置的方法,以及在旧版Android上为WebView设置它们.

    // Grab Proxy settings in a backwards compatible manner
    ProxyConfiguration proxyConfig = ProxySettings.getCurrentHttpProxyConfiguration( context );

    // Set Proxy for WebViews on older versions of Android
    ProxyUtils.setWebViewProxy( getActivity().getApplicationContext() );

但是,您需要了解有关WiFi AP上设置的代理设置的信息.由于WiFi特定的代理设置直到3.1才在Android中实现,因此所有公开该功能的3.1之前的设备都在使用某种自定义黑客.它们不以任何标准方式工作.因此,像这样的库将无法从其中一个黑客中获取任何代理集.

然而,在3.1之前有一个系统范围的代理,这种类库将会抓取.当然Android认为不适合提供任何官方方式来修改此设置.但是Play Store上有一些应用程序允许你这样做,这是我正在使用的应用程序:Proxy Settings并且它运行良好,设置系统代理并允许你通过这个库获取它,甚至更简单的方法比如查询JVM代理设置.

我最终没有使用APL,而是使用更简单的实现:

    private static final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;

    ...

    String proxyAddress;
    int proxyPort;

    if( IS_ICS_OR_LATER )
    {
        proxyAddress = System.getProperty( "http.proxyHost" );

        String portStr = System.getProperty( "http.proxyPort" );
        proxyPort = Integer.parseInt( ( portStr != null ? portStr : "-1" ) );
    }
    else
    {
        proxyAddress = android.net.Proxy.getHost( context );
        proxyPort = android.net.Proxy.getPort( context );
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐