안드로이드 개발 질문/답변
(글 수 45,052)
DB에서 저장된 이미지들을 불러와서
file 저장 시킨 다음에 file들을 static filelist에 담아 둔답니다.
저장된 이미지 경로개수만큼 uri를 인텐트로 넘겨서 메일을 보내는데요.
메일이 가는 동안에 fileList를 삭제하면 전송이 안되더라구요.
첨부는 되는데 메일로 가지는 않는..
아래 코드에서 맨 마지막에 startActivity로 intent 보내면
토스트 창으로 "메일?메시지? 보내는중.." 이렇게 뜨는데요
메일이 완전히 도착하고 나서
fileList를 삭제하는 방법이 있을까요??
intent바로 끝나자마자 삭제하면 이미지파일들이 전송이 되질 않네요..
고수님들 도와주세요 .. ㅠㅠ
일주일 이것만 붙잡고 있는것 같네요..
-------------------------------------------------------------
/이미지가 한 개 이상이기 때문에 Uri를 ArrayList로 받는다.
ArrayList<Uri> uriList = new ArrayList<Uri>();
// getPics가 가지고 있는 이미지 개수 많큼 ..
for(int i =0; i< note.getPics().size();i++)
{
rnotePic = note.getPics().get(i);
Log.v("RNote", "rnotePic :"+rnotePic);
Bitmap bitmap = BitmapFactory.decodeByteArray(
rnotePic.getPic(), 0, rnotePic.getPic().length);
// 이미지 저장
File file = new File ( Environment.getExternalStorageDirectory(),
"RNoteImage_"+i+".png");
Log.v("RNote", "filePaht :"+file.getPath());
try {
file.createNewFile();
OutputStream OpS = new FileOutputStream(file);
// bmp 이미지 파일을 png 파일로 변환해주는 부분
bitmap.compress(Bitmap.CompressFormat.PNG, 100, OpS);
OpS.close();
} catch (IOException e) {
e.printStackTrace();
}
Uri bitmapURI = Uri.fromFile(file); // <- file:///~ 형태의 URI
uriList.add(bitmapURI);
Constants.fileList.add(file);
}
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
fromActivity.startActivity(intent);




fileList를 삭제한다는 의미가 fileList에 저장된 파일경로를 보고 물리적으로 그 파일을 삭제한다는 건가요? 약간 꼼수같지만 이렇게 한번 해보시죠. 메일 인텐트 종료 직 후 fileList에 있는 이미지들을 삭제하지 말고 이미지 수집 후 메일 인텐트를 호출하기 직전에 fileList를 체크해서 파일을 삭제하신 후 메일인텐트를 호출하시면 어떨까요?