代码之家  ›  专栏  ›  技术社区  ›  Fabio Milheiro

Android应用程序:SocketException权限被拒绝(没有这样的文件或目录)

  •  6
  • Fabio Milheiro  · 技术社区  · 14 年前

    我正在尝试使用由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:权限被拒绝。注意日志的细节。

    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代码的主要区别是,我的main activity类扩展了ListActivity,而his扩展了BaseActivity。

    2 回复  |  直到 7 年前
        1
  •  17
  •   Kevin Gaudin    14 年前

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

        2
  •  1
  •   Chris Stratton    14 年前

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

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

    此外,这也是访问本地文件时的一个错误,无论web上存在或不存在什么。