请求INTERNET权限的BindException

时间:2010-04-22 21:53:15

标签: java android sockets bind

在使用Android时,我已经看到了几个关于SocketException的问题,但是它们都没有涵盖我在清单中指定的INTERNET权限时得到的BindException。

以下是我的清单的一部分:

<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>

<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>

以下是我的LogCat输出的相关部分:

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:367)
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)

我真的希望这是一个简单的问题,并且由于绑定发生在小于1024的端口上的工作线程中,所以并不复杂。

更新

看起来这是一个特权端口问题,任何人都知道如何绑定到Android中低于1024的端口?

2 个答案:

答案 0 :(得分:28)

  

任何人都知道如何绑定到较低的端口   Android中的1024以上?

要么手机根,修改固件,要么不绑定到低于1024的端口。这比Linux更重要。

答案 1 :(得分:-2)

尝试添加权限android.permission.INTERNET 它对我有用