質問: ブロードキャストレシーバでインテントアクションのBOOT_COMPLETEDを受け取り、サービスを開始して、アプリのバックグランドでサーバとの通信を行いデータをダウンロードする、という処理を現在実装しています。 元々のアプリがアクティビティの中でやっていたデータのダウンロードをバックグランドで行いたいのですが、アクティビティの中で通信はうまくいくのですが、サービス内で通信をしようとすると ``` HTTPHOSTConectExcepton: Connection to http:// XXX.XXX.XXX.XXX refused ``` と表示されてうまくいきません。 Activityの中での通信はうまくいっているのに、サービス内だとうまくいかない理由がわかりません。 サービスはバインドせず、アクティビティと同一プロセス内別スレッドで処理をしています。 通信に必要なパラメータを渡す前にRefuseされるようで原因を探しています。 環境は jdk1.8.0_77 sdk compile version 23 target sdk version 23 Android Studio 1.5.1 Genymotion Genymotionのエミュレータで開発しています。
回答: 自己解決しました。 英語のStack Overflowをあさっていたら の質問に行きつきました。 Metallica氏の回答にある、 AndroidManifest.xmlのpermission.INTERNETをコメントアウトする。 アプリを実行して、通信する エラーを吐くのを確認。 コメントアウトを外して、実行(この時、adbコマンドではなくgenymotionのエミュレータを立ち上げなおす)。 で正常に動きました。 3日間ハマっていたこの問題はItellij14らへんのバグだそうです。