Android 网络代理

系统级别网络代理

通过对wifi进行代理设置,使手机上所有app的网络访问都走该代理。具体如何设置,百度一下有很多图文并茂的教程。此处不再赘述。

app级别网络代理

通过编码方式,修改app的网络层参数,进而影响整个app所有的网络请求。

1.  Android : 反射机制获取或设置系统属性(SystemProperties) 
有人说好使,但是我在demo中测试没有效果。网友们也可以试试。

2.通过Authenticator修改网络参数
我在demo中使用了如下代码段,确认有效果。测试时用ccproxy启动了一个代理服务。

Authenticator.setDefault(newAuthenticator() {

@Override

protectedPasswordAuthentication getPasswordAuthentication() {

      if(getRequestorType() == RequestorType.PROXY) {

              String prot = getRequestingProtocol().toLowerCase();

              String host = System.getProperty(prot +".proxyHost","192.168.0.163");

              String port = System.getProperty(prot +".proxyPort","808");

              String user = System.getProperty(prot +".proxyUser","");

              String password = System.getProperty(prot +".proxyPassword","");

              if(getRequestingHost().equalsIgnoreCase(host)) {

                        if(Integer.parseInt(port) == getRequestingPort()) {

                                     // Seems to be OK.

                                   return newPasswordAuthentication(user, password.toCharArray());

                            }

                   }

            }

          return null;

        }

});

你可能感兴趣的:(Android 网络代理)