code

오류 StrictMode $ AndroidBlockGuardPolicy.onNetwork

codestyles 2021. 1. 9. 09:55
반응형

오류 StrictMode $ AndroidBlockGuardPolicy.onNetwork


이 질문에 이미 답변이 있습니다.

나는 안드로이드 응용 프로그램을 만들고 JSON서버에서 데이터 가져 오기를 사용 했지만 아래 오류가 표시됩니다.

android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)

이 문제를 어떻게 해결할 수
있습니까 감사합니다


MainActivity 클래스에 "StrictMode"두 줄을 삽입해야합니다. 예제는 다음과 같습니다.

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        try {
            // JSON here
        } catch (JSONException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        setContentView(R.layout.activity_main);
        Intent intent=new Intent(this,HomeActivity.class);
        startActivity(intent);
    }
}

Aey.Sakon


더 나은 사용하기 AsyncTask언급 한 바와 같이 여기에 바로 치우는에 대한 대안을 Exception사용하는 것입니다 :

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

아니면 이거 :

Thread thread = new Thread(new Runnable(){
@Override
public void run() {
    try {
        //Your code goes here
    } catch (Exception e) {
       Log.e(TAG, e.getMessage());
    }
}
});
thread.start();

귀하의 활동에서 Exception발생합니다.


생성 방법 후에 두 줄을 추가하십시오.

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

참조 URL : https://stackoverflow.com/questions/22395417/error-strictmodeandroidblockguardpolicy-onnetwork

반응형