본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] SD Card (External Storage) 상태 감시하는 방법.

by 돼지왕 왕돼지 2012. 2. 18.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 SD-Card ( External Storage ) 의 mount, unmount, media scanner 등의 상태 변화를 감지하는 법을 알아보겠습니다.

 액션 설명 
ACTION_MEDIA_MOUNTED    마운트됨. 마운트 경로는 인텐트의 mData 필드로 조사,
read-only 값은 읽기 전용미디어인지 조사
ACTION_MEDIA_UNMOUNTED    언마운트   
ACTION_MEDIA_EJECT   
사용자가 외부 미디어 제거 명령
응용 프로그램은 모든 열려진 파일 닫아야 함  
ACTION_MEDIA_REMOVED 외부 미디어가 제거됨   
ACTION_MEDIA_NOFS    인식 못하는 파일 시스템이거나 빈 미디어   
ACTION_MEDIA_SCANNER_STARTED    미디어 스케너가 스캔 시작   
ACTION_MEDIA_SCANNER_FINISHED    미디어 스캔 종료   
ACTION_MEDIA_SCANNER_SCAN_FILE    파일 검색했으며 DB에 파일 추가   



포인트는 dataScheme을 "file"로 설정해야만 제대로 수신된다는 것!



<Code>

public void onResume(){
   super.onResume();
 
   IntentFilter filter = new IntentFilter();
   filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
   filter.addAction(Intent.ACTION_MEDIA_REMOVED);
   filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
   filter.addAction(Intent.ACTION_MEDIA_EJECT);
   filter.addAction(Intent.ACTION_MEDIA_NOFS);
   filter.addDataScheme("file");
   registerReceiver (mBRSdcard, filter);
}
 
public void onPause(){
   super.onPause();
   unregisterReceiver(mBRSdcard);
}
 
BroadcastReceiver mBRSdcard = new BroadcastReciever(){
   int count = 0;
   public void onRecieve (Context context, Intent intent){
      String action = intent.getAction();
      count++;
      String str = "Location : " + intent.getData();
      if (action.equals(Intent.ACTION_MEDIA_MOUNTED)){
         boolean readonly = intent.getBooleanExtra("read-only", false);
      }
      ...
   }
}

 

 <Manifest>

<receiver android:name=".BRclass">
   <intent-filter>
      <action android:name="android.intent.action.MEDIA_MOUNTED"/>
      <data android:scheme="file"/>
   </intent-filter>
</receiver>

 
 
로그인 없이 추천 가능합니다. 손가락 꾸욱~





반응형

댓글