2010-04-22 10 views
6

अनुरोध किया है कि मैंने Android का उपयोग करते समय सॉकेटएक्सप्शन के बारे में कई प्रश्न देखे हैं, लेकिन उनमें से कोई भी BindException को कवर नहीं करता है कि मुझे अपने मैनिफेस्ट में निर्दिष्ट इंटरनेट अनुमति के साथ भी मिलता है।इंटरनेट अनुमति के साथ BindException

यहाँ मेरी प्रकट का हिस्सा है:

 
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) 

मैं सच में आशा है कि यह एक साधारण सी समस्या और तथ्य यह है कि से जटिल कुछ नहीं है:

<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 उत्पादन के संबंधित भाग है बाध्यकारी एक बंदरगाह कम से कम 1024.

अद्यतन

पर एक कार्यकर्ता धागा भीतर उत्पन्न हो रही है

ऐसा लगता है कि यह एक विशेषाधिकार प्राप्त बंदरगाह मुद्दा है, किसी को भी पता है कि एंड्रॉइड में 1024 से कम बंदरगाहों को कैसे बांधना है?


    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(); 
    } 

उत्तर

27

किसी को भी एंड्रॉयड में 1024 की तुलना में कम बंदरगाहों के लिए बाध्य करने के लिए कैसे पता है?

या तो अपने फोन को रूट करें, फर्मवेयर संशोधित करें, या 1024 से कम बंदरगाहों से बंधे न हों। यह एक एंड्रॉइड चीज से अधिक लिनक्स चीज है।

+0

दुर्भाग्य से सच :( –

+0

हममम ... एक निहित वातावरण में यह करने के लिए कैसे। हम अपने एंड्रॉयड प्लेटफॉर्म एक एम्बेडेड डिवाइस के लिए निर्माण लगता है पोर्ट 24 पर बाध्य करने के लिए विशेषाधिकार प्राप्त करने के लिए मुझे एंड्रॉइड सेवा देने की क्या अनुमति है? – videoguy

+0

@ videoguy: कोई अनुमति नहीं है। प्रक्रिया रूट (या व्यवस्थापक विशेषाधिकारों के साथ उपयोगकर्ता खाते के रूप में) के रूप में चलनी चाहिए। – CommonsWare

-2

जोड़ने का प्रयास करें अनुमति android.permission.INTERNET यह मेरे लिए काम किया

संबंधित मुद्दे