안드로이드 페이스북 프로필 사진 가져오려는데 오류가 발생합니다.

조회수 1571회
             try{
                   URL image_value = new URL("https://graph.facebook.com/"+id+ "/picture?type=large");
                   Log.i(getPackageName(),"url : "+image_value);
                   Bitmap bmp = null;
                   //오류발생 bmp = BitmapFactory.decodeStream(image_value.openConnection().getInputStream());
                   Log.i(getPackageName(),"bitmap : "+bmp);
                   String temp = BitMapToString(bmp);
                   PreferencesUtil.setPreferences(getApplicationContext(),"profile",temp);
               } catch (IOException e){
                   Log.e("Err : ","image download err: "+e.getMessage());
                   e.printStackTrace();
               }

LOGCAT

W/System.err: android.os.NetworkOnMainThreadException

W/System.err: at com.example.cracking.fb_processes.MainActivity$2$override.onCompleted(MainActivity.java:107)

왜 이코드에서 에러가 발생할까요..?? 해결방법좀 알려주시면 감사하겠습니다

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • Android Network는 mainThread에서 처리해주시면 안됩니다. new Thread를 이용해서 처리하시고, new Handler로 처리해서 UI갱신을 해주시면 됩니다. 알 수 없는 사용자 2016.8.26 11:56

1 답변

  • 허니콤 이후부터 정책적으로 UI 스레드에서 네트워크 요청 시 NetworkOnMainThreadException을 발생시킵니다. 따라서 네트워크를 통해 이미지를 요청하는 부분은 반드시 별도의 스레드에서 처리해야 됩니다.

    코드를 수정하는 간단한 방법 중 하나는 AsyncTask를 사용해서 이미지 요청을 백그라운드 스레드에서 요청하고, 결과(비트맵)를 UI 스레드로 전달하는 방법을 사용해보시기 바랍니다. 아래 링크를 참고하셔서 AsyncTask를 사용하도록 코드를 수정해보세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)