2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Androidでhttp通信に失敗した話

Posted at

はじめに

Android Studio を使って天気予報アプリを作るときに、API から情報を得るため http 通信を行う必要があります。
そのときにかなり苦戦したのでメモとして残しておこうと思います。
初心者のため、間違いがあれば教えてくださると嬉しいです。

http通信の開始

http通信の許可

インターネットに接続するために、インターネットへの接続を許可する必要があります。
また、Android 9 以降ではhttp通信が許可されていないのでマニフェストファイルに明示的に記述する必要があります。

AndroidManifest.xml
 <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:usesCleartextTraffic="true"

通信失敗

その後、Android Studio でエミュレータを起動し、実行してみると http 通信を行うことができずクラッシュし、アプリが停止してしまう事態が発生しました。
エミュレータ上の画面ではWiFiに繋がっているようなのですが、どうもうまくいきません。

色々なことを試行錯誤した挙句、以下の記事の内容が原因であるとわかりました。

[Flutter]Androidエミュレーターが突然インターネット接続できなくなった場合の対処法

もしかすると設定していたAPIレベルが低くて自動でAndroidWifiがつながらない現象が起きたのかもしれません。

記事の内容通り、

  1. エミュレータのスマホの設定画面から「ネットワークとインターネット」を選択する
  2. 「AndroidWifi」を選択後、「詳細設定」を開く。
  3. 「IPアドレス」と「ゲートウェイ」を記録しておく。
  4. 「IP設定」を「静的」にし、先ほど記録したIPアドレスとゲートウェイを入力する。
  5. 「DNS1」が「8.8.8.8」、「DNS2」が「8.8.4.4」であることを確認して、再度アプリを起動する。

この手順を踏んだあとにアプリで http 通信を行えば、アプリがクラッシュせずにすみました。

最後に

もし Android Studio で開発していて http 通信が行えず悩んでいる人がいましたら、Wifiがきちんとつながっているか確認してみてください。
筆者はWiFiがきちんとつながっていなかったので、通信がうまく行えず時間を浪費してしまいました。
少しでも皆さんの助けになれば嬉しいです。

参考文献

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?