마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

갤러리 사진 삭제후 빈썸네일만 남는 현상

0 추천

안녕하세요.

File tempFile = new File(deleteImagePath);

Log.e("Log", "file exists = " + tempFile.exists());

 

boolean delete = tempFile.delete();

Log.e("Log", "delete = " + delete);

 

위와 같은 코드를 사용하여 갤러리에 있는 사진을 삭제 했습니다. (첫번째, 두번째 로그 모두 true 리턴)

근데 막상 갤러리로 가면 검은색 이미지의 섬네일이 남아있고 상세정보를 보면 이미지에 대한 정보는 남아있네요.. 말그대로 사진만 지워지고 헤더는 남은것 같습니다.

사진과 헤더 모두 지우려면 어떻게 해야 하나요?

성상 (380 포인트) 님이 2014년 1월 2일 질문

1개의 답변

0 추천
 
채택된 답변
물리적인 파일은 삭제가 되었는데,

provider가 목록은 가지고 있기 때문에 그런겁니다.

파일의 uri를 이용해서 미디어 table의 해당 컬럼을 삭제 하셔야 합니다.

contentResolver 를 활용하셔서 삭제하세요
Gradler (109,780 포인트) 님이 2014년 1월 2일 답변
성상님이 2014년 1월 2일 채택됨
답글 감사합니다.
먼저 글을 남겨주신 이후에 contentResolver 에 대해서 여러가지로 검색을 해보았습니다. 결론은 getContentResolver.delete(imageUri, null, null);
이런식으로 사용해야 한다고 나오는것 같더군요..
하지만, 해당 이미지의 uri가 unknown URL 로 나오는 군요..
01-02 15:58:38.142: E/AndroidRuntime(29349): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company}: java.lang.IllegalArgumentException: Unknown URL file:///storage/sdcard0/Image/tmp_1388645910023.jpg


죄송하지만 contentresolver 의 사용법을 간단히 일러 주실수 있으신지요?
imageUri 는 어떻게 주셨나요?
아마도 uri 가 잘못된 값이 들어갔기 때문일것으로 보여집니다.
저는 다음과 같이 사용했습니다.

Uri uri = null;
if (type == PublicVariable.MEDIA_TYPE_IMAGE) {
    uri = Images.Media.EXTERNAL_CONTENT_URI;
} else {
    uri = Video.Media.EXTERNAL_CONTENT_URI;
}
String selection = Images.Media.DATA + " = ?";
String[] selectionArgs = {path}; // 실제 파일의 경로
int count = resolver.delete(uri, selection, selectionArgs);
감사합니다 잘되네요!!
...