Blackberry: Не удалось получить местоположения SDCard / Media Card как fileSystemRoot? - PullRequest
1 голос
/ 10 ноября 2011

Я хочу открыть или создать базу данных в SDcard / Media Card.Когда я запускаю приложение на устройстве (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 ]

3 голосов
/ 11 ноября 2011

Я предполагаю, что когда вы запускаете приложение на реальном устройстве, к нему подключен USB-кабель. Если это так, попробуйте отключить кабель и перезапустить приложение. Вы можете использовать Dialog.inform(), чтобы быстро проверить, какие корни вы получите на этот раз.

0 голосов
/ 10 ноября 2011
    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;
}

Попробуйте этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...