はじめに
Android Studio を使って天気予報アプリを作るときに、API から情報を得るため http 通信を行う必要があります。
そのときにかなり苦戦したのでメモとして残しておこうと思います。
初心者のため、間違いがあれば教えてくださると嬉しいです。
http通信の開始
http通信の許可
インターネットに接続するために、インターネットへの接続を許可する必要があります。
また、Android 9 以降ではhttp通信が許可されていないのでマニフェストファイルに明示的に記述する必要があります。
<uses-permission android:name="android.permission.INTERNET" />
<application
android:usesCleartextTraffic="true"
通信失敗
その後、Android Studio でエミュレータを起動し、実行してみると http 通信を行うことができずクラッシュし、アプリが停止してしまう事態が発生しました。
エミュレータ上の画面ではWiFiに繋がっているようなのですが、どうもうまくいきません。
色々なことを試行錯誤した挙句、以下の記事の内容が原因であるとわかりました。
[Flutter]Androidエミュレーターが突然インターネット接続できなくなった場合の対処法
もしかすると設定していたAPIレベルが低くて自動でAndroidWifiがつながらない現象が起きたのかもしれません。
記事の内容通り、
- エミュレータのスマホの設定画面から「ネットワークとインターネット」を選択する
- 「AndroidWifi」を選択後、「詳細設定」を開く。
- 「IPアドレス」と「ゲートウェイ」を記録しておく。
- 「IP設定」を「静的」にし、先ほど記録したIPアドレスとゲートウェイを入力する。
- 「DNS1」が「8.8.8.8」、「DNS2」が「8.8.4.4」であることを確認して、再度アプリを起動する。
この手順を踏んだあとにアプリで http 通信を行えば、アプリがクラッシュせずにすみました。
最後に
もし Android Studio で開発していて http 通信が行えず悩んでいる人がいましたら、Wifiがきちんとつながっているか確認してみてください。
筆者はWiFiがきちんとつながっていなかったので、通信がうまく行えず時間を浪費してしまいました。
少しでも皆さんの助けになれば嬉しいです。