Java 以编程方式导入Wifi代理设置PAC文件
我正在尝试从URL导入PAC文件,并以编程方式更改Wifi代理设置。我搜索了一下,发现有可能:Java 以编程方式导入Wifi代理设置PAC文件,java,android,proxy,android-wifi,wifimanager,Java,Android,Proxy,Android Wifi,Wifimanager,我正在尝试从URL导入PAC文件,并以编程方式更改Wifi代理设置。我搜索了一下,发现有可能: ProxyInfo.buildPacProxy(Uri.parse(“someurl”) 在问这个问题之前,我检查了所有的。我面临的问题是,当我实现其中一些解决方案时,所有的东西都编译得很好,没有例外,但是当我检查时,没有更新代理设置。 这是我的最后一个代码,但再次失败: public void setWifiProxySettings5() { //get the current wifi
ProxyInfo.buildPacProxy(Uri.parse(“someurl”)
在问这个问题之前,我检查了所有的。我面临的问题是,当我实现其中一些解决方案时,所有的东西都编译得很好,没有例外,但是当我检查时,没有更新代理设置。
这是我的最后一个代码,但再次失败:
public void setWifiProxySettings5()
{
//get the current wifi configuration
WifiManager manager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiConfiguration config = GetCurrentWifiConfiguration(manager);
if(null == config)
return;
try
{
//linkProperties is no longer in WifiConfiguration
Class proxyInfoClass = Class.forName("android.net.ProxyInfo");
Class[] setHttpProxyParams = new Class[1];
setHttpProxyParams[0] = proxyInfoClass;
Class wifiConfigClass = Class.forName("android.net.wifi.WifiConfiguration");
Method setHttpProxy = wifiConfigClass.getDeclaredMethod("setHttpProxy", setHttpProxyParams);
setHttpProxy.setAccessible(true);
Class proxySettingsClass = Class.forName("android.net.IpConfiguration$ProxySettings");
Class[] setProxySettingsParams = new Class[1];
setProxySettingsParams[0] = proxySettingsClass;
Method setProxySettings = wifiConfigClass.getDeclaredMethod("setProxySettings", setProxySettingsParams);
setProxySettings.setAccessible(true);
ProxyInfo pacInfo = ProxyInfo.buildPacProxy(Uri.parse("http://localhost/pac"));
//pass the new object to setHttpProxy
Object[] params_SetHttpProxy = new Object[1];
params_SetHttpProxy[0] = pacInfo;
setHttpProxy.invoke(config, params_SetHttpProxy);
//pass the enum to setProxySettings
Object[] params_setProxySettings = new Object[1];
params_setProxySettings[0] = Enum.valueOf((Class<Enum>) proxySettingsClass, "STATIC");
setProxySettings.invoke(config, params_setProxySettings);
//save the settings
manager.updateNetwork(config);
manager.disconnect();
manager.reconnect();
}
catch(Exception e)
{
Log.v("wifiProxy", e.toString());
}
}
public void setWifiProxySettings5()
{
//获取当前的wifi配置
WifiManager=(WifiManager)getApplicationContext().getSystemService(Context.WIFI_服务);
WifiConfiguration config=GetCurrentWifiConfiguration(管理器);
if(null==config)
返回;
尝试
{
//linkProperties不再处于WifiConfiguration中
Class proxyInfoClass=Class.forName(“android.net.ProxyInfo”);
类[]setHttpProxyParams=新类[1];
setHttpProxyParams[0]=proxyInfoClass;
Class wifiConfigClass=Class.forName(“android.net.wifi.WifiConfiguration”);
方法setHttpProxy=wifiConfigClass.getDeclaredMethod(“setHttpProxy”,setHttpProxyParams);
setHttpProxy.setAccessible(true);
Class proxySettingsClass=Class.forName(“android.net.IpConfiguration$ProxySettings”);
类[]setProxySettingsParams=新类[1];
SetProxySettingsSparams[0]=proxySettingsClass;
方法setProxySettings=wifiConfigClass.getDeclaredMethod(“setProxySettings”,setProxySettingsParams);
setProxySettings.setAccessible(true);
ProxyInfo pacInfo=ProxyInfo.buildPacProxy(Uri.parse(“http://localhost/pac"));
//将新对象传递给setHttpProxy
Object[]params_SetHttpProxy=新对象[1];
params_SetHttpProxy[0]=pacInfo;
调用(config,params_setHttpProxy);
//将枚举传递给setProxySettings
Object[]params_setProxySettings=新对象[1];
params_setProxySettings[0]=枚举值((类)proxySettingsClass,“STATIC”);
调用(配置,参数设置);
//保存设置
manager.updateNetwork(配置);
manager.disconnect();
manager.reconnect();
}
捕获(例外e)
{
Log.v(“wifiProxy”,例如toString());
}
}
应用程序无法设置PAC文件,请检查请查看和@Kristiyan找到解决方案了吗?您可以共享吗?应用程序无法设置PAC文件,请检查请查看和@Kristiyan找到解决方案了吗?您可以共享吗?