2014-06-09 63 views
1

我是新的Android编程,我想从互联网下载文件,但此代码不工作。 这是我的类,它包含公共变量:从互联网上下载文件在Android编程

public class G extends Application{ 
public static Context context; 
public static final String    
    SD=Environment.getExternalStorageDirectory().getAbsolutePath(); 
public static final String SD_path= SD +"/file-downloader"; 
@Override 
public void onCreate() { 
    super.onCreate(); 
    context=this.getApplicationContext(); 
    new File(SD_path).mkdirs(); 
} 

} 

和我的下载类:

public class FileDownloader { 
public static void download(String address,String Path) 
{ 
    try { 
     FileOutputStream output=new FileOutputStream(Path); 
     byte[] buffer =new byte[8*1024]; 
     URL url =new URL(address); 
     HttpURLConnection connection =(HttpURLConnection) 
        url.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.setDoOutput(true); 
     connection.connect(); 



     InputStream stream=connection.getInputStream(); 
     int len =0; 
     while((len=stream.read(buffer)) >0) 
     { 
      output.write(buffer,0,len); 
     } 
        output.close(); 



    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

} 

我的主类:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    FileDownloader.download("http://192.168.1.2/file-server/image1.jpg", 
      G.SD_path+"/img2.jpg"); 
} 

一切都OK了,但我不知道为什么这个代码不工作! 所有权限添加到清单和wamp服务器工作正常,但错误发生在 ==> Connection.connect(); < ==线。 感谢您的帮助

我logcat的错误:

06-09 17:00:09.665: E/AndroidRuntime(793): java.lang.RuntimeException: Unable to start  
activity ComponentInfo{com.test.download/com.test.download.MainActivity}: 
android.os.NetworkOnMainThreadException 

06-09 17:00:09.665: E/AndroidRuntime(793): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 

06-09 17:00:09.665: E/AndroidRuntime(793): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 

06-09 17:00:09.665: E/AndroidRuntime(793): at 
com.test.download.FileDownloader.download(FileDownloader.java:23) 

06-09 17:00:09.665: E/AndroidRuntime(793): at  
com.test.download.MainActivity.onCreate(MainActivity.java:15) 
+0

你从哪里找到这段代码? – cybermonkey

+0

发布您的Logcat错误 –

+0

使用线程或AsyncTask执行下载任务。应该从上面的任何一个调用下载方法。 – Prachur

回答

0

您试图在UI线程的网络连接。尝试下载AsyncTask

相关问题