티스토리 뷰
* MediaScannerConnection 이용
private MediaScannerConnectionClient client = new MediaScannerConnectionClient(){
public void onMediaScannerConnected() {
mediaScanner.scanFile(path, mimetype);
public void onMediaScannerConnected() {
mediaScanner.scanFile(path, mimetype);
}
public void onScanCompleted(String path, Uri uri) {
public void onScanCompleted(String path, Uri uri) {
mediaScanner.disconnect();
}
};
MediaScannerConnection mediaScanner = new MediaScannerConnection(context.getApplicationContext(), client);
mediaScanner.connect();
};
MediaScannerConnection mediaScanner = new MediaScannerConnection(context.getApplicationContext(), client);
mediaScanner.connect();
이건 원하는 파일을 scanning 할 수 있다.
그리고 MediaScannerConnection 의 첫번째 인자로 Context가 들어가는데 ApplicationContext를 넣어줘야 connect가 되더라;
이거때문에 삽질;;
기존의 content가 삭제된 경우는 scan한다고 해서 기존의 content가 db에서 제거되지 않기때문에
content uri를 얻어와서 provider를 통해 직접 delete를 호출해 줘야 한다.
(scan한다음 넘어오는 uri 사용, scan 안한다면 where문 잘써서 query 날려~)
media mount action을 새로 보내버리는 것이다.
그럼 다시 scanning을 하기때문에 파일을 이동시킨경우 삭제된 것 까지 처리가 쉽게 되버린다~
하지만 비효율적이니;
D/MediaScanner( 181): scan time: 111ms
D/MediaScanner( 181): postscan time: 59ms
D/MediaScanner( 181): total time: 687ms
D/MediaScannerService( 181): done scanning volume external
통째로 scanning하는 하는 방법은 비추이다
kitkat부터는 security가 강화되었는데 Intent.ACTION_MEDIA_MOUNTED 는 system 이 보내는 broadcast이므로 사용자가 보내면 FC가 발생한다.
쓰지맙시다!!
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 드라마
- Linux
- 서울숲별밤축제
- 포스트크로싱
- epik high
- 여행
- 공연
- postcrossing
- Java
- 영화
- 안드로이드
- 진해
- 일본
- android
- 사진
- 책
- 도쿄
- 노래
- 일기
- 락
- 음악
- 잡담
- 신주쿠
- 코이데 케이스케
- 아사가야
- 인디
- 일어일기
- 야마다 타카유키
- Mac
- 에픽하이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함