使用FileObserver 類監聽android sd卡變動

ccfc 9年前發布 | 1K 次閱讀 Java

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,
           Uri.parse("file://"+ Environment.getExternalStorageDirectory().getAbsolutePath())));
      
      } }</pre>
 本文由用戶 ccfc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!