【问题标题】:Android application: SocketException permission denied (No such file or directory)Android应用程序:SocketException权限被拒绝(没有这样的文件或目录)
【发布时间】:2010-09-25 21:52:02
【问题描述】:

我正在尝试使用 Fedor 编写和上传的代码,该代码发布在此线程中 Lazy load of images in ListView(源代码:http://open-pim.com/tmp/LazyList.zip

Fedor 的项目运行良好,但是当我尝试使代码适应我的项目时,由于遇到了这个异常 (SocketException),事情运行不顺利。

不知何故,即使在清单中将权限设置为具有 Internet 权限(是的,我的 Internet 连接正常)后,我仍然得到它:

<uses-sdk android:minSdkVersion="8">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
</uses-sdk>

异常:SocketException:权限被拒绝。观看 LogCat 详细信息。

09-24 23:43:00.591: ERROR/File was not found.(1124): /mnt/sdcard/ListViewTest/-421624214 (No such file or directory)
09-24 23:43:00.601: WARN/System.err(1124): java.net.SocketException: Permission denied
09-24 23:43:00.611: WARN/System.err(1124):     at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method)
09-24 23:43:00.611: WARN/System.err(1124):     at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186)
09-24 23:43:00.622: WARN/System.err(1124):     at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265)
09-24 23:43:00.632: WARN/System.err(1124):     at java.net.Socket.checkClosedAndCreate(Socket.java:873)
09-24 23:43:00.632: WARN/System.err(1124):     at java.net.Socket.connect(Socket.java:1020)
09-24 23:43:00.632: WARN/System.err(1124):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62)
09-24 23:43:00.642: WARN/System.err(1124):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88)
09-24 23:43:00.642: WARN/System.err(1124):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927)
09-24 23:43:00.652: WARN/System.err(1124):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909)
09-24 23:43:00.661: WARN/System.err(1124):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1152)
09-24 23:43:00.661: WARN/System.err(1124):     at java.net.URL.openStream(URL.java:653)
09-24 23:43:00.661: WARN/System.err(1124):     at fabiomilheiro.tests.ImageLoader.getBitmap(ImageLoader.java:80)
09-24 23:43:00.671: WARN/System.err(1124):     at fabiomilheiro.tests.ImageLoader.access$0(ImageLoader.java:66)
09-24 23:43:00.671: WARN/System.err(1124):     at fabiomilheiro.tests.ImageLoader$PhotosLoader.run(ImageLoader.java:173)

错误 /mnt/sdcard/ListViewTest/-421624214(没有这样的文件或目录)困扰着我。我调试了我对 Fedor 代码的改编,但我不明白为什么找不到文件。我检查并确认我要获取的文件确实存在于网络上。

顺便说一下,图片上传类是完全一样的。我看到我的代码和 Fedor 的代码之间的主要区别是我的主要活动类扩展了 ListActivity 而他的扩展了 BaseActivity。

【问题讨论】:

    标签: android sockets


    【解决方案1】:

    我不知道它是否能解决您的问题,但在您的清单中,uses-permission 指令不应放在 uses-sdk 指令内。

    【讨论】:

    • 谢谢凯文·高丁!你的建议解决了问题。这是对刚开始的人来说并不明显的简单事情之一。
    • 完全没有权限时也会出现该错误。
    • @tos 当然,放错了权限就等于根本没有。
    【解决方案2】:

    你真的有一个名为“/mnt/sdcard/ListViewTest/-421624214”的文件吗???

    因为在我看来,这就像有人用 %d 而不是 %s 冲刺了一个文件名,并且它将指针的值转换为十进制 int 而不是将其取消引用为字符串。 (或者 Java 中一些类似的程序员类型混淆)

    这也是访问本地文件时的错误,无论网络上存在或不存在什么。

    【讨论】:

    • 这不是问题,但无论如何谢谢。我也觉得可能是这样的!
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 2011-10-30
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多