エミュレーターでAndroidの2.2および2.3バージョンでプロキシ設定を有効にしましたが、インターネットが機能し始めましたが、インストールされているアプリケーション(プロキシでのみ機能します)がまだ機能していません。4.0バージョンのエミュレーターで同じことをしたとき、それはそこで機能していました。インターネットは機能しているのに、なぜ2.2バージョンと2.3バージョンで機能しないのか誰にもわかりません。
3 に答える
また、Eclipse環境でエミュレーターのプロキシーをセットアップしました。エミュレータの起動コマンドにプロキシアドレスが正しく追加されました。
それでも、エミュレーターのWiFi設定に移動してプロキシアドレスを入力するまで、一部のアプリ(ブラウザーなど)でのみ機能し、他のアプリ(マップなど)では機能しないことに苦労していました。
この設定では、エミュレータの起動行で使用できるように、DNS名の前に使用できないことに注意してください。http://
(それを理解するのに1時間かかりました。)
これを試してみてください(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
エミュレーターでプロキシーを構成すると、ブラウザーアプリケーションでプロキシーを使用できるようになりますが、他のアプリケーションはインターネットにアクセスできる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"));
エミュレーターと実際の電話の両方で同じコードを機能させたいので、ユーザーがプロキシの使用をオンまたはオフにできる設定をアプリに追加し、プロキシサーバー/ポート/資格情報を入力する必要がありますアプリケーションでそれらをハードコーディングする代わりに。