2010-09-25 14 views
6

Sto cercando di utilizzare il codice scritto e caricato da Fedor ha scritto in questa discussione (codice sorgente: http://open-pim.com/tmp/LazyList.zip) Lazy load of images in ListViewAndroid applicazione: il permesso SocketException negato (Nessun file o directory)

progetto di Fedor funziona bene, ma quando provo ad adattare il codice al mio progetto, le cose non stanno andando bene da quando sono passato a questa eccezione (SocketException).

In qualche modo, io continuo a ricevere che anche dopo aver impostato il permesso sul manifesto per avere l'autorizzazione a Internet (e sì, ho una connessione a Internet attiva):

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

L'eccezione: SocketException: Permesso negato. Guarda i dettagli di 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) 

L'errore/mnt/sdcard/ListViewTest/-421.624.214 (Nessun file o directory) è bugging me. Ho eseguito il debug del mio adattamento del codice di Fedor e non vedo perché i file non vengano trovati. Ho controllato e confermato che i file che sto cercando di ottenere esistono sul web.

A proposito, la classe di caricamento immagine è esattamente la stessa. La principale differenza che vedo tra il mio codice e il codice di Fedor è che la mia classe di attività principale estende ListActivity mentre estende la BaseActivity.

risposta

17

Non so se risolve il problema, ma nel tuo manifest, le direttive use-permission non devono essere inserite nella direttiva uses sdk.

+3

Grazie, Kevin Gaudin! Il tuo suggerimento ha risolto il problema. È una di quelle cose semplici che non sono ovvie per qualcuno che sta appena iniziando. –

+0

L'errore si verifica anche quando manca completamente l'autorizzazione. – tos

+0

@tos certo, avere un permesso fuori posto equivale a non averlo affatto. –

1

Avete davvero un file chiamato "/ mnt/sdcard/ListViewTest/-421624214" ???

Perché quello mi sembra come se qualcuno avesse sprintf'd un nome di file con% d anziché% s e ha convertito il valore di un puntatore in un int decimale invece di de-referenziarlo a una stringa. (O qualche confondibile confusione di tipo di programmatore in Java)

Anche questo è un errore all'accesso a un file locale, indipendentemente da ciò che esiste o non esiste sul web.

+0

che non era il problema, ma grazie comunque. Ho anche pensato che potesse essere qualcosa del genere! –