我正在尝试使用 SQLite 数据库来保存来自消息传递应用程序的日志信息。
我正在使用 SQLiteOpenHelper 并使用以下命令将数据库强制到无根设备的 SD 卡上:
public LogDatabase(Context context, String dbname) {
super(context,
Environment.getExternalStorageDirectory().getAbsolutePath() +
"/" + dbname, null, 3);
}
这似乎工作正常:数据库适当增长,应用程序在写入时不会抛出任何异常。
当我通过 USB 安装设备并尝试从外部应用程序(例如,来自 Ubuntu 命令行的 sqlite3)打开数据库时,就会出现问题。错误始终相同:“错误:文件已加密或不是数据库”。
Android 对 SQLite 的处理有什么奇怪的吗?还是我在管理数据库的方式上遗漏了一些根本性的问题?
编辑:有问题的原始设备是运行 v2.3.5 的 HTC Desire S。
编辑:我已经在替代设备(运行 v2.3.4 的摩托罗拉 ET1)上重新运行测试,但问题没有发生。我可以通过 Ubuntu 挂载设备,通过 sqlite3 命令行随意浏览数据库。