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();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder root Ihr Telefon, ändern Sie die firmware, oder nicht binden von ports kleiner als 1024. Das ist ein Linux, was mehr als ein Android-Ding.
Versuchen Sie, fügen Sie die Berechtigung android.die Genehmigung.INTERNET
es war für mich