L
louisbgt
Neues Mitglied
- 0
Hallo ich bin gerade bei einem Tutorial angekommen, wo es darum geht die xml einer Webseite herunterzuladen
und hier noch das AndroidManifest mit der einen hinzugefügten Berechtigung:
Ich habe den Code exakt wie im Video angegeben abgeschrieben, allerdings schlägt return im Logcat fehl:
Die anderen Teilnehmer klagen über das gleiche Problem, allerdings funktioniert es bei dem Mann, der das Tutorial gemacht hat.
Könnt ihr mir vllt. helfen das Problem zu beheben?
Und für eine kleine Erklärung bezüglich dieses Projektes wäre ich auch sehr dankbar, denn trotzmehrmaligen schauens des Tutorials verstehe ich es leider nicht.
Mit freundlichen Grüßen
Javascript:
package com.udemy.downloadingwebcontent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.ExecutionException;
public class MainActivity extends AppCompatActivity {
// <wird übergeben, nichts wird zurückgegeben>
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url; // initialisieren wir erst später
HttpURLConnection urlConnection = null;
// mehrstufiger Prozess: 1. brauch ich den Link auf den ich verbinden will
// 2. dann muss ich auf den Link verbinden
// 3. dann brauch ich ein InputStream, der die Daten in einer bestimmten Form ausliest
// wir Verbindung/ Kanal, wo die Daten durch gehen
// 4. muss ich InputStream mit ...Reader auslesen
// 5. nun können wir daraus Daten machen
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1){ //solange nicht minus 1 ist
char current = (char) data; //gib die aktuellen Daten in Buchstaben aus, jedes einzelne Zeichen
// befüllen von result
// name += ...; heißt wir hängen an
result += current;
data = reader.read();
}
//nach der while-Schleife, sprich nach dem alle Daten ausgelesen wurden
//geben wir result aus
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
return "Failed";
} catch (Exception e) { //alle Probleme
e.printStackTrace();
return "Failed";
}
// return null; >> brauchen wir nicht mehr, da alle Stränge return zurück geben
// da oben vor Methodenname String steht
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Klasse aufrufen
// lege Projekt an und initialisiere es
DownloadTask task = new DownloadTask();
String result = null;
try {
result = task.execute("https://zappycode.com/").get();
} catch (ExecutionException e) { //Verbindung wurde unterbrochen
e.printStackTrace();
} catch (InterruptedException e) { //Fehler bei der Ausführung des Ganzen
e.printStackTrace();
} catch (Exception e){ // für jede andere Exception, wie z.B. gar kein Internet
e.printStackTrace();
}
Log.i("Result", result);
//wir brauchen Erlaubnis um aufs Internet zuzugreifen
// sonst: Logcat > D/NetworkSecurityConfig: No Network Security Config specified, using platform default
// deshalb: im AndroidManifest.xml
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.udemy.downloadingwebcontent">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DownloadingWebContent">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Ich habe den Code exakt wie im Video angegeben abgeschrieben, allerdings schlägt return im Logcat fehl:
Die anderen Teilnehmer klagen über das gleiche Problem, allerdings funktioniert es bei dem Mann, der das Tutorial gemacht hat.
Könnt ihr mir vllt. helfen das Problem zu beheben?
Und für eine kleine Erklärung bezüglich dieses Projektes wäre ich auch sehr dankbar, denn trotzmehrmaligen schauens des Tutorials verstehe ich es leider nicht.
Mit freundlichen Grüßen