7

我在模拟器中启用了 2.2 和 2.3 版本的 android 的代理设置,并且互联网开始工作,但我安装了一个应用程序(仅适用于代理)仍然无法正常工作。当我为 4.0 版本的模拟器做同样的事情时,它在那里工作。谁能告诉,为什么它不能在 2.2 和 2.3 版本上运行,尽管互联网正在运行。

4

3 回答 3

6

我还在 Eclipse 环境中为模拟器设置了代理。它正确地将代理地址添加到模拟器启动命令中。

然而,在我进入模拟器中的 WiFi 设置并输入代理地址 之前,我仍然在努力解决它只能在某些应用程序(如浏览器)中而不在其他应用程序(如地图)中工作的问题。

请注意,您不能http://像在模拟器启动行中那样​​在此设置中使用DNS 名称之前。(花了一个小时才弄清楚。)

于 2012-08-02T23:32:55.297 回答
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
于 2012-08-08T19:35:08.787 回答
2

在模拟器中配置代理允许浏览器应用程序使用它,但任何其他应用程序都需要能够访问 Internet 的 HTTP 代理。

假设您使用 DefaultHttpClient 类连接到 Internet,您必须在建立连接之前将以下代码添加到您的 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"));

由于您希望相同的代码同时在模拟器和真手机上运行,​​您应该在应用程序中添加一个设置,允许用户打开或关闭代理的使用,并输入代理服务器/端口/凭据而不是在应用程序中硬编码它们。

于 2012-08-09T08:22:43.120 回答