2012-02-10 59 views
0

在我的應用程序中,我創建了一個旨在從sd卡讀取內容的服務。在啓動時找不到目錄

該服務在引導時創建並啓動。

問題是,儘管我很確定該目錄存在,但在引導時,服務無法找到該目錄。

public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    Context context=getBaseContext(); 
    File sdDir = new File(Environment.getExternalStorageDirectory()+"/temp/Data/"); 
    if(!sdDir.exists()){ 
     sdDir.mkdir(); 
     Toast.makeText(this, "CAN'T FIND!", Toast.LENGTH_LONG).show(); 
    } 
} 

此片段上方輸出

  1. 服務啓動
  2. CAN NOT FIND!

起初,我以爲SD卡可能不會在啓動時裝入,這就是爲什麼服務無法找到目錄。我對此還不確定。

有人有想法嗎?可能是什麼問題?

回答

2

某些設備需要時間來安裝SD卡。啓動時間後可能無法立即使用。

只是每隔幾秒輪詢一次,直到它變得可用。

也試試這個:

public static boolean hasStorage(boolean requireWriteAccess) { 
    String state = Environment.getExternalStorageState(); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     return true; 
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     return true; 
    } 
    return false; 
} 

From Here