BindException with requested INTERNET request

I saw several questions regarding SocketException when using Android, but none of them cover the BindException, which I get even with the INTERNET permission specified in my manifest.

Here is part of my manifest:

 <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.READ_OWNER_DATA"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCOUNT_MANAGER"></uses-permission> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission> 

code>

Here is the relevant part of my LogCat output:

  04-22 14: 49: 06.117: DEBUG / MyLibrary (4844): Address to bind: 192.168.1.14 port: 843
 04-22 14: 49: 06.197: WARN / System.err (4844): java.net.BindException: Permission denied (maybe missing INTERNET permission)
 04-22 14: 49: 06.207: WARN / System.err (4844): at org.apache.harmony.luni.platform.OSNetworkSystem.socketBindImpl (Native Method)
 04-22 14: 49: 06.207: WARN / System.err (4844): at org.apache.harmony.luni.platform.OSNetworkSystem.bind (OSNetworkSystem.java:107)
 04-22 14: 49: 06.217: WARN / System.err (4844): at org.apache.harmony.luni.net.PlainSocketImpl.bind (PlainSocketImpl.java:184)
 04-22 14: 49: 06.217: WARN / System.err (4844): at java.net.ServerSocket.bind (ServerSocket.java:414)
 04-22 14: 49: 06.227: WARN / System.err (4844): at org.apache.harmony.nio.internal.ServerSocketChannelImpl $ ServerSocketAdapter.bind (ServerSocketChannelImpl.java:213)
 04-22 14: 49: 06.227: WARN / System.err (4844): at java.net.ServerSocket.bind (ServerSocket.java data67)
 04-22 14: 49: 06.237: WARN / System.err (4844): at org.apache.harmony.nio.internal.ServerSocketChannelImpl $ ServerSocketAdapter.bind (ServerSocketChannelImpl.java:283)
 04-22 14: 49: 06.237: WARN / System.err (4844): at mylibrary.net.PolicyConnection $ PolicyServerWorker. (PolicyConnection.java:201)

I really hope this is a simple problem, not something complicated by the fact that the binding occurs inside the workflow on a port less than 1024.

Update

It seems like this is a privileged port issue, does anyone know how to bind to ports below 1024 in Android?

 SelectorProvider provider = SelectorProvider.provider(); try { ServerSocketChannel channel = provider.openServerSocketChannel(); policySocket = channel.socket(); Log.d("MyLibrary", "Address to bind: " + device.getAddress().getAddress() + " port: 843"); InetSocketAddress addr = new InetSocketAddress(InetAddress.getByName(device.getAddress().getAddress()), 843); policySocket.bind(addr); policySocket.setReuseAddress(true); policySocket.setReceiveBufferSize(256); } catch (Exception e) { e.printStackTrace(); } 
+6
java android sockets bind
source share
2 answers

Does anyone know how to bind to ports lower than 1024 in Android?

Plug in your phone, change firmware, or don’t connect to ports below 1024. This is Linux more than Android.

+27
source share

Try adding the permission android.permission.INTERNET it worked for me

-2
source share

All Articles