¿Cómo reparar android.os.NetworkOnMainThreadException?

Usando AsyncTask (recomendado)

importar androidx.appcompat.app.AppCompatActivity; importar android.os.AsyncTask; importar android.os.Bundle; importar android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; MainActivity de clase pública extiende AppCompatActivity {TextView textLoad, textMessage; cadena final strMessage = “https://sites.google.com/site/androidersite/text.txt”; @Anular el vacío protegido onCreate (paquete SavedInstanceState) {super.onCreate (SavedInstanceState); setContentView (R.layout.activity_main); textLoad = findViewById (R.id.textLoad); textMessage = findViewById (R.id.textMessage); textLoad.setText ("Cargando ..."); nuevo MyTask (). execute (); } la clase privada MyTask extiende AsyncTask{Resultado de cadena; @Override protected Void doInBackground (Void… voids) {URL url; intente {url = nueva URL (strMessage); BufferedReader bufferedReader = nuevo BufferedReader (nuevo InputStreamReader (url.openStream ())); String stringBuffer; String string = “”; while ((stringBuffer = bufferedReader.readLine ())! = null) {string = String.format (“%s%s”, string, stringBuffer); } bufferedReader.close (); resultado = cadena; } captura (IOException e) {e.printStackTrace (); resultado = e.toString (); } return null; } @Override protected void onPostExecute (Void aVoid) {textMessage.setText (resultado); textLoad.setText ("Finalizado"); super.onPostExecute (aVoid); }}}

Deshabilitar el modo estricto (no recomendado)

if (android.os.Build.VERSION.SDK_INT> 9) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder (). permitAll (). build (); StrictMode.setThreadPolicy (política); }

x
2D vs 3D