【问题标题】:Blackberry: Not able to get locations SDCard/Media Card as fileSystemRoot?黑莓:无法将位置 SD 卡/媒体卡作为文件系统根目录?
【发布时间】:2011-11-10 09:09:20
【问题描述】:

我想在 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 以便我可以在那里复制数据库?

【问题讨论】:

    标签: blackberry


    【解决方案1】:

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

    【讨论】:

    • 是的,先生,您的猜测是正确的,根据您的建议,我拔掉了电缆并获得了 SD 卡的位置。我现在可以在 SDCard 中创建数据库了。非常感谢。
    • 这只是 BlackBerry.. :( 考虑创建一些将日志条目写入文件的记录器,稍后您可以将其从设备下拉到 PC 进行调查。
    • 各位,投反对票的时候也请说明理由。这样我就可以从案例中吸取教训,这样我下次就不会再犯同样的错误了。否则这只是一个幼稚/不诚实的行为。我总是可以接受我的错误,而无需任何报复性反馈。
    • 解决了我的问题 :) 我认为这是因为它插入了 USB 驱动器。因此,该卡已连接到 PC,无法通过电话访问。连接你的手机,在任何模式下运行。然后从“我的电脑”手动弹出存储驱动器。这样,您通过电缆连接,而不是通过 pc 使用存储驱动器。因此可以运行 DEBUG 模式。
    【解决方案2】:
        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;
    }
    

    试试这个代码。

    【讨论】:

    • 我的问题是我没有获得文件根目录,即我没有在根目录中获得 SDCard/ 或媒体卡,如代码所示。当我在设备中运行应用程序时,我发现只有一个根,即。 system/ 即使插入了 SD 卡。 (enum.hasMoreElements() 只循环一次给 root = system/)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多