Загрузка файла из интернета на 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");
}

Все хорошо, но я не знаю, почему этот код не работает! все разрешения, добавленные к манифесту и серверу 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)

1 ответ

Вы пытаетесь подключиться к сети в потоке пользовательского интерфейса. Пытаться AsyncTask для скачивания.

Другие вопросы по тегам