# Datei downloaden über DialogBox?



## bruce85 (14. Nov 2012)

Hallo nochmal,
der Titel sagt schon alles, ich habe schon viel gegoogelt und etwas gefunden, leider möchte er einfach nicht downloaden.

Hier ist mal der Code:

```
public void updateData(){
        final String file_url = this.getString(R.string.file_url);
        final ProgressDialog myProgress = new ProgressDialog(this);
    	myProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    	myProgress.setMessage("Videodateien werden heruntergeladen.");
        myProgress.show();
    
        new Thread(new Runnable(){

        	public void run(){
        		try {
        			URL url = new URL(file_url);
        			HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        			urlConnection.setRequestMethod("GET");
        			urlConnection.setDoOutput(true);
        			urlConnection.connect();

        			File SDCardRoot = Environment.getExternalStorageDirectory();
        			File file = new File(SDCardRoot,"filename.rar");
        			FileOutputStream fileOutput = new FileOutputStream(file);

        			InputStream inputStream = urlConnection.getInputStream();

        			int totalSize = urlConnection.getContentLength();
        			myProgress.setMax(totalSize);
        			int downloadedSize = 0;

        			byte[] buffer = new byte[1024];
        			int bufferLength = 0;
        			int progress = 0;
        			while ( (bufferLength = inputStream.read(buffer)) != -1 ) {
        				fileOutput.write(buffer, 0, bufferLength);
        				downloadedSize += bufferLength;
        				progress = downloadedSize;
        				myProgress.setProgress(progress);
        			}
        			fileOutput.close();
        			myProgress.dismiss();
        		} catch (MalformedURLException e) {
        			e.printStackTrace();
        		} catch (IOException e) {
        			e.printStackTrace();
        		}
        	}
        }).start(); 
	}
```

Der Dialog öffnet sich zwar, aber es tut sich garnix, der ProgressDialog ist immer auf 0.
Hab ich Vielleicht etwas falsch gemacht?

Ich bedanke mich schonmal im Voraus.

MfG


----------



## Schandro (14. Nov 2012)

Kann es sein das der ProgressDialog modal ist? Wenn ja musst du den Thread vor 
	
	
	
	





```
myProgress.show();
```
 starten, da die Ausführung des Codes so lange gestoppt wird bis der Dialog beendet ist.


----------



## bruce85 (14. Nov 2012)

Danke Dir, das hab ich auch versucht, leider das gleiche Problem.

Irgendwas stimmt mit urlConnection.connect(); nicht, wenn ich nach urlConnection.connect(); etwas in die Cosole schreibe zum test, dann wird es nicht mehr ausgeführt.

Kann man das nicht irgendwie anders lösen?

MfG


----------



## bruce85 (14. Nov 2012)

Hab das Problem gelöst.
Hatte vergessen das hier:
[XML]<uses-permission android:name="android.permission.INTERNET" />[/XML]
in der AndroidManifest.xml zu setzen.

Danke trotzdem.

MfG


----------



## bruce85 (14. Nov 2012)

Noch eine Frage:
Wie kann ich, wenn der erste download beendet ist, einen weiteren download in dem gleichen ProgressDialog starten?

Ich hab das so versucht:

```
public void startDownload() {
        final ProgressDialog myProgress = new ProgressDialog(this);
    	myProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        myProgress.show();
    	new Thread(new Runnable(){
    		 
    		public void run(){
    	try {
        	for (int i=0; i<videoAnz; i++) {
        		if (videos[i].download == 1) {
        			downloadNr = downloadNr + 1;
        			final String file_url = videos[i].dUrl;
        	    	myProgress.setMessage("Videodateien werden heruntergeladen ("+downloadNr+"/"+downloadAnz+")");
        	    	
		    		URL url = new URL(file_url);
		            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
		            urlConnection.setRequestMethod("GET");
		            urlConnection.setDoOutput(true);
		            urlConnection.connect();
		
		            FileOutputStream fileOutput = new FileOutputStream(videos[i].dOrt);
		            InputStream inputStream = urlConnection.getInputStream();
		            int totalSize = urlConnection.getContentLength();
		            myProgress.setMax(totalSize);
		            int downloadedSize = 0;
		 
		            byte[] buffer = new byte[1024];
		            int bufferLength = 0;
		            int progress = 0;
		            while ((bufferLength = inputStream.read(buffer)) != -1) {
		                    fileOutput.write(buffer, 0, bufferLength);
		                    downloadedSize += bufferLength;
		                    progress = downloadedSize;
		                    myProgress.setProgress(progress);
		            }
		            fileOutput.close();
		            myProgress.dismiss();
        		}
        	}
        } catch (MalformedURLException e) {
                e.printStackTrace();
        } catch (IOException e) {
                e.printStackTrace();
        }
    		}
    	}).start();
    }
```

wenn es dann mehr als einmal durchläuft bei der for Schleife (videoAnz), dann bekomm ich einen Thread Exception.

Kann mir da Vielleicht jemand weiterhelfen?

MfG


----------

