SocketException: Operation not permitted

We may run into this error while developing an app for Android:

Connection error: java.net.SocketException: socket failed: EPERM (Operation not permitted)
    at java.net.Socket.createImpl(Socket.java:517)
    at java.net.Socket.getImpl(Socket.java:577)
    at java.net.Socket.setSoTimeout(Socket.java:1203)
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:293)

It may look like this as well:

Connection error: java.net.SocketException: Operation not permitted
    at sun.nio.ch.Net.socket0(Native Method)
    at sun.nio.ch.Net.socket(Net.java:420)
    at sun.nio.ch.Net.socket(Net.java:413)
    at sun.nio.ch.SocketChannelImpl.<init>(SocketChannelImpl.java:130)

I won’t be torturing you with long explanations and references 😁, so everything you should do is to check that you have android.permission.INTERNET permission in your AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <application ....>
    </application>
</manifest>

Sometimes it’s necessary to add android.permission.ACCESS_NETWORK_STATE as well.


Telegram channel

If you still have any questions, feel free to ask me in the comments under this article or write me at promark33@gmail.com.

If I saved your day, you can support me 🤝