CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: bluemask con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 5 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 17 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Download immagini da cartella dropbox, android.os.NetworkOnMainThreadException.

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    87

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Download immagini da cartella dropbox, android.os.NetworkOnMainThreadException.

    Buongiorno ragazzi, Sono riuscito a creare un codice che dovrebbe funzionare, il codice è questo:

    codice:
    try {
               File root = android.os.Environment.getExternalStorageDirectory();
               File dir = new File(root.getAbsolutePath() + "/mnt/sdcard/myimg/img");
               if(dir.exists() == false) dir.mkdirs();  
               for(int i=0; i<7;i++) {
                 URL url = new URL(DownloadUrl+Tempo[i]);
                 File file = new File(dir,Tempo[i]);
    
                 long startTime = System.currentTimeMillis();
                 Log.d("DownloadManager" , "download url:" +url);
                 Log.d("DownloadManager" , "download file name:" + Tempo[i]);
    
                 URLConnection uconn = url.openConnection();
                 uconn.setReadTimeout(7000);
                 uconn.setConnectTimeout(7000);
    
                 InputStream is = uconn.getInputStream();
                 BufferedInputStream bufferinstream = new BufferedInputStream(is);
    
                 ByteArrayBuffer baf = new ByteArrayBuffer(5000);
                 int current = 0;
                 while((current = bufferinstream.read()) != -1)
                    baf.append((byte) current);
    
                 FileOutputStream fos = new FileOutputStream( file);
                 fos.write(baf.toByteArray());
                 fos.flush();
                 fos.close();
                 Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec");
     //           int dotindex = Tempo[i].lastIndexOf('.');
    //           if(dotindex>=0) Tempo[i] = Tempo[i].substring(0,dotindex);
               }
         }
         catch(IOException e) {
          Log.d("DownloadManager" , "Error:" + e);
         }
    purtroppo mi da il seguente errore android.os.NetworkOnMainThreadException.

    questo è il logCat completo:

    codice:
    03-16 12:04:00.800: W/dalvikvm(16314): threadid=1: thread exiting with uncaught exception (group=0x41798ce0)
    03-16 12:04:00.800: E/AndroidRuntime(16314): FATAL EXCEPTION: main
    03-16 12:04:00.800: E/AndroidRuntime(16314): Process: com.example.test, PID: 16314
    03-16 12:04:00.800: E/AndroidRuntime(16314): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: android.os.NetworkOnMainThreadException
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread.access$800(ActivityThread.java:145)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.os.Handler.dispatchMessage(Handler.java:102)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.os.Looper.loop(Looper.java:136)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread.main(ActivityThread.java:5081)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at java.lang.reflect.Method.invokeNative(Native Method)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at java.lang.reflect.Method.invoke(Method.java:515)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at dalvik.system.NativeStart.main(Native Method)
    03-16 12:04:00.800: E/AndroidRuntime(16314): Caused by: android.os.NetworkOnMainThreadException
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at java.net.InetAddress.getAllByName(InetAddress.java:214)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.example.test.MainActivity.DownloadImage(MainActivity.java:60)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at com.example.test.MainActivity.onCreate(MainActivity.java:36)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.Activity.performCreate(Activity.java:5231)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    03-16 12:04:00.800: E/AndroidRuntime(16314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
    03-16 12:04:00.800: E/AndroidRuntime(16314): ... 11 more
    Potete per favore dirmi come potrei risolvere tale errore? Grazie mille ANTICIPATAMENTE

    P.S la linea 60, equivale all'istruzione InputStream is = uconn.getInputStream();

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts

  4. #3
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    87

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie mille..proprio quello che cercavo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy