2014-09-24 72 views
1

我有問題,識別文件創建在平板索尼XPERIA Z,使用的是Android 4.4.2我有這樣的代碼:的是Android 4.4.2和文件觀察員 - 創建文件識別

private void observeDirectory(final String path){ 
     observer = new FileObserver(path) { // set up a file observer to watch this directory on sd card 


      @Override 
      public void onEvent(int event, String file) { 

       //Log.v("FILE EVENT", "Event id: " + Integer.toString(event)); 
       switch (event) { 
        case FileObserver.ACCESS: 
         //Log.d("FILE OBSERVER", "FILE ACCESS " + file); 
        break; 

        case FileObserver.OPEN: 
         Log.d("FILE OBSERVER", "FILE Open: " + file); 
        break; 

        case android.os.FileObserver.MOVED_FROM: 
         Log.d("FILE OBSERVER", "FILE Moved From: " + file); 
        break; 

        case android.os.FileObserver.MOVED_TO: 
         Log.d("FILE OBSERVER", "FILE Moved to: " + file); 
        break; 

        case android.os.FileObserver.MOVE_SELF: 
         Log.d("FILE OBSERVER", "FILE Moved self: " + file); 
        break; 

        case FileObserver.CLOSE_NOWRITE: 
         Log.d("FILE OBSERVER", "FILE closed & no - write: " + file); 
        break; 

        case FileObserver.CLOSE_WRITE: 
         Log.d("FILE OBSERVER", "FILE closed & write: " + file); 
        break; 

        case android.os.FileObserver.MODIFY: 
         Log.d("FILE OBSERVER", "FILE closed & no - write: " + file); 
        break; 

        case android.os.FileObserver.CREATE: 
         Log.d("FILE OBSERVER", "File created [" + path + "/" + file + "]"); 
        break; 
        case FileObserver.DELETE: 
         Log.d("FILE OBSERVER", "FILE DELETED " + file); 
        break; 


       } 



      } 

     }; 
     observer.startWatching(); //START OBSERVING 
    } 

而且這是工作,但不給我關於所有活動的信息。作爲這個方法的參數,我傳遞文件夾路徑。我有關於訪問該文件的信息,打開並保存關閉。但我也有不同的android應用程序,在這個目錄中創建文件。我必須使用文件觀察器來檢測它何時發生,但我無法使其工作。我不需要重複使用,因爲我只有一個文件夾。我怎樣才能使它工作?

有趣的是,這段代碼在三星設備和Nexus 5(kitkat/Android L)和Nexus7(kitkat)上都很有魅力。但不知何故Xperia Tablet Z有問題,我真的不知道爲什麼它是這樣的。我發現只有在將文件加載到列表視圖時,纔會在applikation開始時訪問文件。但之後完全nothinhg。在Nexus上,我一直在工作,我有關於創建和寫入文件的信息。任何人都可以幫助我?

回答

1

我只能通過將清單中的用戶權限android.permission.WRITE_EXTERNAL_STORAGE添加到KitKat中才能使FileObserver工作。我不知道爲什麼從4.4版本的Android中獲得此權限,並且可能只有在您要監視外部存儲時才需要此權限。不幸的是,我找不到有關此行爲改變的任何文檔或信息。

您可能試圖觀看內部存儲器,因爲您可以(不像我)將它用於Nexus 7上,但這個答案仍然可能對某人有用。

+0

你救了我的命:D;):v – 2015-07-23 18:32:03