차근차근/Android

안드로이드 갤러리 갱신 - 했다.

예쁜꽃이피었으면 2015. 1. 26. 10:18

검색어 :안드로이드 갤러리 갱신


안드로이드에서 카메라 촬영 후 , 이미지 다운로드 후 갤러리로 가보면 갱신이 안되어 있는 경우가 있다.

그때에 강제로 갱신을 시켜준다.



sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));


혹은

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.parse("file://" + Environment.getExternalStorageDirectory())));




http://victor8481.tistory.com/305

sendBroadcast(Intent intent)

일반적인 broadcast는 sendBroadcast()로 전달되는 순간에 등록된 receiver들의 onReceive()만을 호출하는 구조로 되어 있다.

이 receiver에 등록이 되지 않는다면 해당 message를 받을 수 없는 상태가 되어 버린다.

이게 일반 어플에서는 문제가 되지 않지만 네트워크 관련 정보를 업데이트 하는 경우에는 문제가 될 수 있다.


sendstickyBroadcast(Intent intent)

이로 인해서 나온게 바로 sendStickyBroadcast()이다.

해당 api로 보낸 broadcast 는 system 에 남아 있다가 새롭게 해당 broadcast를 받을 수 있는 receiver가 등록되면

새로 등록된 receiver의 onReceive()를 호출해 줌으로써 받을 수 있게 된다.

이를 제거 하고 싶을 때는 removeStickyBroadcast()를 사용한다.


stickybroadcast를 사용하기 위해서는 

android permission.BROADCAST_STICKY 퍼미션이 필요하다.







http://hackss.tistory.com/entry/android-kitcat-%EC%97%90%EC%84%9C-refresh-gallery-%EB%AC%B8%EC%A0%9C

[android] kitcat 에서 refresh gallery 문제


public void broadcastPhotoAdded() {

Log.i(TAG, "snap.java | line 203******broadcastPhotoAdded()");

Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

 File f = new File(mImageCaptureUri.getPath());

//mImageCaptureUri.getPath() = 갱신할 파일의 전체 경로 (파일명 까지.)

   mediaScanIntent.setData(contentUri);

   this.sendBroadcast(mediaScanIntent);

}


반응형