我正在制作一个在后台运行的应用程序,并在设备启动时启动。 我已经阅读了文档,并从RIM获得了SQLiteDemo文件,我正在使用它们尝试在模拟器中的SD卡上创建数据库。
不幸的是,我收到此错误:
DatabasePathException:Invalid path name. Path does not contains a proper root list. See FileSystemRegistry class for details.
这是我的代码:
public static Database storeDB;
public static final String DATABASE_NAME = "testDB";
private String DATABASE_LOCATION = "file:///SDCard/Databases/MyDBFolder/";
public static URI dbURI;
dbURI = URI.create(DATABASE_LOCATION+DATABASE_NAME);
storeDB = DatabaseFactory.openOrCreate(dbURI);
为了这篇文章的目的,我为try/catch
和URI.create
取了DatabaseFactory.openOrCreate
。
那么,谁能告诉我为什么我无法在我的模拟器上创建数据库?
如果我加载它并进入媒体,我可以手动创建一个文件夹。 SD卡指向我硬盘上的文件夹,如果我在那里创建了一个文件夹,它也会在模拟器上显示,所以我可以创建文件夹,而不是以编程方式。
另外,我在开发人员文档中试过这个:
// Determine if an SDCard is present
boolean sdCardPresent = false;
String root = null;
Enumeration enum = FileSystemRegistry.listRoots();
while (enum.hasMoreElements())
{
root = (String)enum.nextElement();
System.err.println("root="+root);
if(root.equalsIgnoreCase("sdcard/"))
{
sdCardPresent = true;
}
}
但它只会选择store/
而不会sdcard/
。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
FYI, 我想我已经解决了这个问题。
问题是我在启动期间尝试写入存储,但存储没有准备好。一旦加载了设备/模拟器,并且触发了一些我的监听器,就会创建数据库。