#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 /).