Wie behebe ich android.os.NetworkOnMainThreadException?

Mit AsyncTask (empfohlen)

import androidx.appcompat.app.AppCompatActivity; import android.os.AsyncTask; android.os.Bundle importieren; android.widget.TextView importieren; java.io.BufferedReader importieren; import java.io.IOException; import java.io.InputStreamReader; java.net.URL importieren; öffentliche Klasse MainActivity erweitert AppCompatActivity { TextView textLoad, textMessage; final String strMessage = „https://sites.google.com/site/androidersite/text.txt“; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textLoad = findViewById(R.id.textLoad); textMessage = findViewById(R.id.textMessage); textLoad.setText("Wird geladen..."); new MyTask().execute(); } private Klasse MyTask erweitert AsyncTask{ String-Ergebnis; @Override protected Void doInBackground(Void… voids) { URL url; try { url = neue URL (strMessage); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream())); String stringBuffer; Zeichenfolge Zeichenfolge = „“; while ((stringBuffer = bufferedReader.readLine()) != null){ string = String.format(“%s%s”, string, stringBuffer); } BufferedReader.close(); Ergebnis = Zeichenfolge; } catch (IOException e) { e.printStackTrace(); Ergebnis = e.toString(); } null zurückgeben; } @Override protected void onPostExecute(Void aVoid) { textMessage.setText(result); textLoad.setText("Fertig"); super.onPostExecute(aVoid); } } }

Strengen Modus deaktivieren (nicht empfohlen)

if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy-Richtlinie = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(Richtlinie); }

x
2D vs 3D