android.os.NetworkOnMainThreadException

kalimett

Utente Attivo
29 Apr 2011
39
0
0
ciao ragazzi,

Ho un problemino e mi rivolgo a voi esperti smanettoni di Android :)
Allora... sudando non poco sono riuscito a creare un codice per scaricare delle immagini da Dropbox.
Questo il mio codice:
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 però mi da il seguente errore: android.os.NetworkOnMainThreadException.
questo è il logCat completo:
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
Qualcuno sa darmi qualche dritta???
 

Discussioni simili