今回は画面遷移後の画面でHTTP通信を行うプログラムの実装を試みた。
java.net.SocketException: Socket failed: EPERM(Operation not permitted)
ボタン2を押下により画面3が呼び出し、onCreateで非同期処理を実行。
非同期処理クラスのonPostExcecuteでサーバから取得した乱数をTextViewに表示。
しかし、通信する際、
java.net.SocketException: Socket failed: EPERM(Operation not permitted)
というエラーが表示される。
調査結果
未だ解決方法はわかっていない。
調査では以下のような解決方法が示されていたが、
試してみたが、うまくいかなかった。
本実装の問題とは関係ないようである。
他の方はこれで解決できるかもしれないので、
参考にしていただきたい。
[解決方法]
・AndroidManifest.xmlに以下のコードを追加する。
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
まとめ
私の記事「サーバクライアント通信」に記載したコードでは
HTTP通信とサーバからの値取得はうまくいっていた。
今回と過去の記事での違いは
MainActivityから非同期処理を呼び出しているか、
画面遷移後の画面から呼び出しているかである。
ここに何かヒントがあるのか…
次回はこの問題を解決できるよう頑張りたい。
以上。