使用FileObserver 類監聽android sd卡變動
import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Environment; import android.os.FileObserver; import android.util.Log;/**
sd卡上的目錄創建監聽器 */ public class SDCardListener extends FileObserver { private Context context;
public SDCardListener(Context context, String path) {
// 這種構造方法是默認監聽所有事件的,如果使用super(String,int)這種構造方法, 則int參數是要監聽的事件類型. super(path); this.context = context; init();
}
/**
注冊監聽器 */ public void init() { IntentFilter intentfilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED); intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentfilter.addDataScheme("file"); ScanSdReceiver scanSdReceiver = new ScanSdReceiver(); context.registerReceiver(scanSdReceiver, intentfilter); }
@Override public void onEvent(int event, String path) { switch (event) { case FileObserver.CREATE://監聽創建
Log.d("Create", "path:" + path); rescanSdcard(); break;
case FileObserver.DELETE://監聽刪除
Log.d("Delete", "path:" + path); rescanSdcard(); break;
} }
/**
- 刷新SD卡
*/
public void rescanSdcard() {
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
} }</pre>Uri.parse("file://"+ Environment.getExternalStorageDirectory().getAbsolutePath())));
本文由用戶 ccfc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!