Как исправить исключение android.os.NetworkOnMainThreadException?

Anonim

Используя AsyncTask (рекомендуется)

import androidx.appcompat.app.AppCompatActivity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; открытый класс MainActivity расширяет AppCompatActivity {TextView textLoad, textMessage; final String strMessage = «https://sites.google.com/site/androidrsite/text.txt»; @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); textLoad = findViewById (R.id.textLoad); textMessage = findViewById (R.id.textMessage); textLoad.setText («Загрузка…»); новый MyTask (). execute (); } закрытый класс MyTask расширяет AsyncTask {String result; @Override protected Void doInBackground (Void… voids) {URL url; попробуйте {url = новый URL (strMessage); BufferedReader bufferedReader = новый BufferedReader (новый InputStreamReader (url.openStream ())); String stringBuffer; Строка строка = «»; while ((stringBuffer = bufferedReader.readLine ())! = null) {строка = String.format («% s% s», строка, stringBuffer); } bufferedReader.close (); результат = строка; } catch (IOException e) {e.printStackTrace (); результат = e.toString (); } return null; } @Override protected void onPostExecute (Void aVoid) {textMessage.setText (результат); textLoad.setText («Готово»); super.onPostExecute (aVoid); }}}

Отключить строгий режим (не рекомендуется)

если (android.os.Build.VERSION.SDK_INT> 9) {StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder (). allowAll (). build (); StrictMode.setThreadPolicy (политика); }

Как исправить исключение android.os.NetworkOnMainThreadException?