1090페이지 네트워크장에서


HTTP 비동기 다운로드 부분입니다.


그림파일을 웹에서 다운받아서 이미지뷰에 표시해주는 방식인데...


DDMS로 확인해보니 파일은 경로에 맞게 다운로드가 되는데 앱상에서 이미지뷰에 표시가 되질 않습니다.


숨겨진 버그를 잡아죽여주세요.ㅠㅠ


else if(v.getId() == R.id.button2) {

Log.i("DeBug", "버튼2 이벤트 리스터 진입");

imageUrl = "http://www.winapi.co.kr/data/child3.jpg";

int idx = imageUrl.lastIndexOf('/');

String localimage = imageUrl.substring(idx + 1);

String path= Environment.getDataDirectory().getAbsolutePath();

path += "/data/example.backdown2/files/" + localimage;

if( new File(path).exists() == false) {

Toast.makeText(this, "파일이 존재하지 않아 다운로드 받습니다.", 1000).show();

DownloadImage(imageUrl, localimage);

}

Toast.makeText(this, "파일이 존재하기에 캐쉬에 있는 파일을 불러옵니다.", 1000).show();

Bitmap bitmap = BitmapFactory.decodeFile(path);

img.setImageBitmap(bitmap);

}


위의 부분은 버튼클릭에 구현된 부분입니다.

int idx = imageUrl.lastIndexOf('/');

String localimage = imageUrl.substring(idx + 1);

String path= Environment.getDataDirectory().getAbsolutePath();

이부분도 잘 이해가 되지 않습니다...ㅠㅠ



그리고 아래 부분은 다운로드 핵심 메서드입니다.

boolean DownloadImage(String url, String FileName) {

URL imageurl;

int Read;

try {

imageurl = new URL("url);

HttpURLConnection conn = (HttpURLConnection)imageurl.openConnection();

// int len = conn.getContentLength();

// byte[] raster = new byte[len];

InputStream is = conn.getInputStream();

BufferedInputStream bis = new BufferedInputStream(is);

FileOutputStream fos = openFileOutput(FileName, 0);

while((Read = bis.read())!= -1) {

fos.write(Read);

}

is.close();

fos.close();

conn.disconnect();

}catch(Exception ee) { return false;}

return true;

}


도대체 왜 이미지뷰에 표시가 되지 않는걸까요?