我正在尝试阅读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] 举报,一经查实,本站将立刻删除。