Androidアプリメモ/メモ7
UnknownHostExceptionで困った
アプリからインターネットを通じて外部サーバのデータを取得しようと思い、HTTP通信を行おうとしたら、UnknownHostExceptionが投げられました。通信先のホスト名がうまく判断できないときに出る例外ですが、ブラウザで同じURLにアクセスするとちゃんと通信可能です。過去にAndroid開発環境のエミュレータのDNSに問題があって同じ例外が発生することもあったようですが、そんなバグがまだ残っているとも考えにくいです。
そういえばAndroidアプリはその特性上、Android端末でいろんなことができる代わりに、セキュリティ的に問題がありそうな操作にはユーザからの許可が必要なのでした。インターネットリソースへのアクセスももちろん悪質な使い道がいくらでもある行為ですので、ユーザに使用に関しておうかがいをたてる必要があります。
AndroidManifest.xmlファイルに
<uses-permission android:name="android.permission.INTERNET" />
というパーミッションを設定したら、ちゃんとアクセスできるようになりました。