Hallo,
ich beschäftige mich momentan mit der Android programmierung. Ich habe bereits erste Erfahrungen mit Java sammeln können.
Nun möchte ich das alles auf Android anwenden.
Ich habe ein praktisches Beispiel für meine erste App gedacht:
Ein Speiseplan, welcher im Internet als .txt Datei vorliegt soll runtergeladen und in ein String kopiert werden.
Anschließend wird dieser nach den Wochentagen geparst und in einer Listendarstellung ausgegeben.
Ich habe bereits ein wenig Recherche betrieben, hinsichtlich des Dateidownloads. Dabei bin ich auch auf den AsyncTask gestoßen:
Beispielcode:
DownloadFile.java:
public class DownloadFile extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
String html = null;
// unsere Methode aufrufen
html = sendRequest(params[0]);
Log.d(this.getClass().getName(), html);
// ggf weiterverarbeiten!!!!! parsen, Datenbank updaten, etc.
// oder zurueckgeben
return html;
} catch (Exception e) {
Log.e(this.getClass().getName(), "Fehler in der SST", e);
}
return null;
}
public String sendRequest(String urlStr) throws Exception {
// Standardvalidierung
if (urlStr == null || urlStr.isEmpty()) {
throw new InvalidParameterException("Der Parameter urlStr ist null oder leer!");
}
// Verbindung erstellen
HttpURLConnection connection = null;
// hier kann eine Exception fliegen, wenn es keine URL ist
URL url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setRequestMethod("GET");
connection.setUseCaches(false);
// Antwort erstellen
StringBuilder str = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line = "";
while ((line = br.readLine()) != null) {
str.append(line + System.getProperty("line.separator"));
}
// Antwort wieder geben
return str.toString();
}
}
Alles anzeigen
Aus der MainAcitivity kann das Prozedere folgendermaßen geöffnet werden:
DownloadFile task = new DownloadFile()
task.execute("http://raspitux.de/LunchApp/ausgabe.txt");
Ich gebe dem execute-Befehl des Async Task die URL der Textdatei mit auf den Weg.
Meine Frage jetzt:
Wie kann ich die Antwort, also den Dateiinhalt in einen String kopieren, den ich im Hauptprogramm weiter nutzen kann?