Blackberry: не удается получить местоположения SDCard / Media Card как fileSystemRoot?

#blackberry

#ежевика

Вопрос:

Я хочу открыть или создать базу данных на 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, чтобы я мог скопировать туда базу данных?

Ответ №1:

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

Комментарии:

1. да, сэр, ваше предположение верно, согласно вашему совету, я отсоединил кабель и получил местоположение sdcard. Теперь я могу создать базу данных на SDCard. Большое вам спасибо.

2. Это просто BlackBerry .. : ( Подумайте о создании какого-нибудь регистратора, который записывает записи журнала в файл, который вы можете позже перенести с устройства на ПК для исследования.

3. Ребята, при голосовании за понижение, пожалуйста, также укажите причину. Таким образом, я могу чему-то научиться из дела, чтобы в следующий раз не повторять ту же ошибку. В противном случае это просто детское / нечестное действие. Я всегда могу признать свои ошибки без каких-либо мстительных отзывов.

4. Исправлена моя проблема 🙂 Я думаю, это связано с тем, что он подключен к USB-накопителю. Итак, карта подключена к ПК и недоступна через телефон. Подключите свой телефон, запустите в любом режиме. Затем вручную извлеките накопители из «моего компьютера». Таким образом, вы подключены по кабелю и не используете накопители через ПК. И, следовательно, может запускать режим отладки.

Ответ №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;
}
  

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

Комментарии:

1. мой вопрос в том, что я не получаю fileroots, т. Е. я не получаю SDCard / или Media Card в root, как показано в коде. Когда я запускаю приложение на устройстве, я обнаружил только один root ie. system / даже если sdcard вставлена. (перечисление.hasMoreElements() выполняется только один раз, выдавая root = system /).