2011-11-10 23 views
1

我想在SDcard/Media Card中打開或創建數據庫。當我在設備(BlackBerry Curve 8900)中運行應用程序時,我發現只有一個根,即「system /」,並在模擬器(9500)中運行應用程序,我找到三個根源,如代碼註釋中所示。我在錯誤處;Blackberry:無法將位置SDCard/Media Card作爲fileSystemRoot獲取?

_db = DatabaseFactory.openOrCreate(_uri); 
    (error: Method "toString" with signature "()Ljava/lang/String;" is not applicable on this object) 

而且我無法理解這個錯誤是什麼。 這是代碼。

public void getValues() throws Exception 
{ 

    boolean sdCardPresent = false; 
    String root = null; 
    Enumeration e = FileSystemRegistry.listRoots(); 
    while (e.hasMoreElements()) 
    { 
     root = (String)e.nextElement(); 
     System.out.println("Value of root::" +root); // value of root = "system/" when run in device and 
                // value of root = "store/" "SDCard/" "system/" when run in simulator 
     if(root.equalsIgnoreCase("system/")) 
     { 
      sdCardPresent = true; 
     }  
    }   
    System.out.println("--------------------getValues()----------------------------------"); 
    URI _uri = URI.create(Global.DB_PATH + Global.DB_Main); 
    System.out.println("Valud of uri::" +_uri); 
    _db = DatabaseFactory.openOrCreate(_uri); //getting error here. 
    System.out.println("Valud of _db::" +_db); 
    _db.close(); 

我嘗試了這些三個路徑,獲得輸出用「/存儲」時(當在模擬器中運行),但錯誤在設備使用「/存儲」剩餘的兩個paths.Even是顯示同樣的錯誤。

Global.DB_PATH = "/MediaCard/databases/"; 
Global.DB_PATH = "/SDCard/databases/"; 
Global.DB_PATH = "/store/databases/"; 

有什麼辦法如何以root身份獲取SDCard /媒體卡,以便我可以在那裏複製數據庫?

回答

3

我的猜測是當你在真正的設備上運行你的應用程序時,你的USB電纜插入設備。如果是這種情況,請嘗試拔下電纜並重新運行應用程序。您可以使用Dialog.inform()來快速檢查您這次得到的根。

+0

是的,先生,你的猜測是正確的,根據你的建議我拔掉了電纜,並獲得了SD卡的位置。我現在可以用SDCard創建數據庫了。非常感謝。 –

+0

這工作,但現在我無法調試:(。 –

+0

這只是黑莓.. :(考慮創建一些記錄器,將日誌條目寫入文件,您可以稍後從設備下拉到PC調查 –

-1
private ObjectListField getFileList() { 
    if (fileList == null) { 
     fileList = new ObjectListField(); 
     String[] roots = new String[3]; 
     Enumeration enum = FileSystemRegistry.listRoots(); 
     int x = 0; 
     while (enum.hasMoreElements()) { 
      if (x < 3) { 
       roots[x] = enum.nextElement().toString(); 
      } 
      x++; 
     } 
     enum = FileSystemRegistry.listRoots(); 
     fileList.set((roots[2] != null) ? roots : new String[]{"system/", "SDCard/", "store/"}); 
    } 
    return fileList; 
} 

試試看看這個代碼。

+0

我的問題是,我沒有收到文件根目錄,即我沒有在代碼中顯示SD卡/或媒體卡。當我在設備上運行應用程序時,我想出了只有一個根即ie。系統/即使插入了SD卡。 (enum.hasMoreElements()只循環一次給root = system /)。 –