BindException mit INTERNET-Berechtigung angefordert

Ich gesehen habe mehrere Fragen bezüglich SocketException bei der Verwendung von Android, aber keiner von Ihnen Abdeckung die BindException, dass ich auch mit der INTERNET-Berechtigung angegeben, die in meinem manifest.

Hier ist ein Teil von meinem 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>

Hier ist der relevante Teil meiner LogCat Ausgabe:

04-22 14:49:06.117: DEBUG/MyLibrary(4844): Adresse binden: 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): bei org.apache.Harmonie.luni.- Plattform.OSNetworkSystem.socketBindImpl(Native-Methode) 
04-22 14:49:06.207: WARN/System.err(4844): bei org.apache.Harmonie.luni.- Plattform.OSNetworkSystem.bind(OSNetworkSystem.java:107) 
04-22 14:49:06.217: WARN/System.err(4844): bei org.apache.Harmonie.luni.net.PlainSocketImpl.bind(PlainSocketImpl.java:184) 
04-22 14:49:06.217: WARN/System.err(4844): bei java.net.ServerSocket.bind(ServerSocket.java:414) 
04-22 14:49:06.227: WARN/System.err(4844): bei org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter.bind(ServerSocketChannelImpl.java:213) 
04-22 14:49:06.227: WARN/System.err(4844): bei java.net.ServerSocket.bind(ServerSocket.java:367) 
04-22 14:49:06.237: WARN/System.err(4844): bei org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter.bind(ServerSocketChannelImpl.java:283) 
04-22 14:49:06.237: WARN/System.err(4844): auf mylibrary.net.PolicyConnection$PolicyServerWorker.(PolicyConnection.java:201) 

Ich hoffe Wirklich, dass dies ein einfaches problem ist und nicht etwas kompliziert durch die Tatsache, dass die verbindlich ist, die innerhalb ein worker-thread auf einem port kleiner als 1024.

Update

Sieht aus, als wenn dies ein privilegierter port Problem, weiss jemand wie man das binden von ports kleiner als 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();
    }
Schreibe einen Kommentar