android.os.NetworkOnMainThreadExceptionを修正する方法は?

AsyncTaskを使用する(推奨)

import androidx.appcompat.app.AppCompatActivity; import android.os.AsyncTask; android.os.Bundleをインポートします。 android.widget.TextViewをインポートします。インポートjava.io.BufferedReader;インポートjava.io.IOException;インポートjava.io.InputStreamReader; java.net.URLをインポートします。パブリッククラスMainActivityはAppCompatActivityを拡張します{TextViewtextLoad、textMessage;最終的な文字列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( "Loading…"); new MyTask()。execute(); }プライベートクラスMyTaskはAsyncTaskを拡張します{文字列の結果; @Override protected Void doInBackground(Void…voids){URL url; {url = new URL(strMessage);を試してください。 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));文字列stringBuffer;文字列string =“”; while((stringBuffer = bufferedReader.readLine())!= null){string = String.format(“ %s%s”、string、stringBuffer); } bufferedReader.close();結果=文字列; } catch(IOException e){e.printStackTrace();結果= e.toString(); } nullを返します。 } @Override protected void onPostExecute(Void aVoid){textMessage.setText(result); textLoad.setText( "Finished"); super.onPostExecute(aVoid); }}}

厳密モードを無効にする(非推奨)

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

x
2D vs 3D