黑莓:无法将SD卡/媒体卡作为文件系统根位置?

时间:2011-11-10 09:09:20

标签: blackberry

我想在SD卡/媒体卡中打开或创建数据库。当我在设备(BlackBerry Curve 8900)中运行应用程序时,我只找到一个根,即“system /”并在模拟器(9500)中运行应用程序,我发现三个根,如代码中的注释所示。我收到了错误;

  _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();

我尝试了这三个路径,使用“/ store”获取输出(在模拟器中运行时)但是有两个路径的错误。即使在设备中使用“/ store”也显示相同的错误。

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

有没有办法让SDCard / Media Card成为root用户,以便我可以在那里复制数据库?

2 个答案:

答案 0 :(得分:3)

我的猜测是,当您在真实设备上运行应用时,您已将USB电缆插入设备。如果是这种情况,请尝试拔下电缆并重新运行应用程序。您可以使用Dialog.inform()快速查看此次获得的根。

答案 1 :(得分:-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;
}

试试这段代码。