Buongiorno ragazzi, Sono riuscito a creare un codice che dovrebbe funzionare, il codice è questo:
purtroppo mi da il seguente errore android.os.NetworkOnMainThreadException.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); }
questo è il logCat completo:
Potete per favore dirmi come potrei risolvere tale errore? Grazie mille ANTICIPATAMENTEcodice: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
P.S la linea 60, equivale all'istruzione InputStream is = uconn.getInputStream();

LinkBack URL
About LinkBacks
Rispondi quotando
