※本記事は、旧ブログからの再掲です。
Androidエミュレータからインターネット接続ができない場合の対処方法です。
これまでのところ、以下2点の場合にインターネット接続ができないことがありました。
(1)DNS設定が原因の場合
(2)SSL接続時の証明書が原因の場合
ネットで調べてみたところ、何らかの要因でDNSサーバーにアクセスできなくなっているとのことでした。
この場合には、DNSサーバーを設定すれば良いようです。
ターミナルで現在のDNS設定を確認すると、dns1のみ設定されていました。
$ cd /Applications/android-sdk-macosx/platform-tools
$ ./adb shell
# getprop
[net.dns1]: [10.0.2.3]
[net.dnschange]: [1]
[net.eth0.dns1]: [10.0.2.3]
[net.eth0.gw]: [10.0.2.2]
10.0.2.3 は Using the Emulator によると、First DNS server とのことです。
ここに何らかの要因でアクセスできないので、セカンダリを設定します。
# setprop net.dns2 10.0.2.4
上記設定をした後、エミュレータを再起動するとインターネット接続可能となります。
もし、上記IPアドレスを設定しても接続できない場合は、Google Public DNS を設定します。
# setprop net.dns1 8.8.8.8
# setprop net.dns2 8.8.4.4
※8.8.8.8/8.8.4.4 は Google Pubilc DNS
下記のように、Eclipseの環境設定で対処する方法もあったので試してみたのですが、
私の場合にはうまくいかないことの方が多いので、上記方法で対処しています。
[Eclipse]→[環境設定]→[Android]→[起動]の設定に
”デフォルト・エミュレーター・オプション”という項目があるので、そこに
-dns-server 8.8.8.8,8.8.4.4
と入力し適用するとネット接続可能になります。
(Eclipse再起動必要)
<参考>
[Android Developers] Using the Emulator
WebViewにてHTTPS接続しようとした場合、証明書に問題があると上記エラー画面が表示されるようです。
エラーを無視して処理を進めるには
下記のように onReceivedSslError()をオーバーライドして、handler.proceed()を呼べば良いらしいですが、オススメできません。
1 2 3 4 5 6 7 8 9 10 11 12 |
import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.SslErrorHandler; import android.net.http.SslError; webView.setWebViewClient(new WebViewClient(){ @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } }); |
<参考>
[Android Developers] SslErrorHandler