我在模拟器中的2.2和2.3版本的android中启用了代理设置,并且互联网开始工作但我安装了一个应用程序(仅适用于代理)仍然无法正常工作。当我为4.0版本模拟器做同样的事情时,它正在那里工作。任何人都可以告诉,为什么它不适用于2.2和2.3版本,虽然互联网正在运作。
答案 0 :(得分:6)
我还在Eclipse环境中为模拟器设置了代理。它正确地将代理地址添加到模拟器启动命令。
然而,在我进入模拟器中的WiFi设置并输入代理地址之前,我仍然只在某些应用程序(如浏览器)中工作,而不是在其他应用程序(如地图)中工作。
请注意,无法在此设置中的DNS名称之前使用http://
,就像在模拟器启动行中一样。 (花了一个小时才搞清楚。)
答案 1 :(得分:4)
你应该试试这个(对于Android 2.3):
1. > adb shell
2. # sqlite3 /data/data/com.android.providers.settings/databases/settings.db
3. sqlite> INSERT INTO system VALUES(99,’http_proxy', 'proxy:port');
4. sqlite>.exit
此外,您可以尝试通过参数 http-proxy
启动模拟器时显式定义代理emulator -avd yourAVD -http-proxy http://yourproxy:port
答案 2 :(得分:2)
在模拟器中配置代理允许浏览器应用程序使用它,但任何其他应用程序都需要能够访问互联网的HTTP代理。
假设您使用DefaultHttpClient类连接到互联网,您必须在进行连接之前将以下代码添加到Android应用程序中:
DefaultHttpClient client = new DefaultHttpClient();
HttpHost proxy = new HttpHost("yourproxy.domain.com", 3128);
// Enter your proxy domain and port
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
如果您使用经过身份验证的代理,则还需要包含以下行:
client.getCredentialsProvider().setCredentials(
new AuthScope("yourproxy.domain.com", 3128),
new UsernamePasswordCredentials("proxyusername", "password"));
由于您希望相同的代码同时适用于模拟器和真实手机,因此您应该向应用程序添加一个设置,允许用户打开或关闭代理使用,并进入代理服务器/端口/凭证,而不是在应用程序中对它们进行硬编码。