我有一个 SQLite 数据库,我想在我的 Android 应用程序中使用。
首先,我将我的数据库从 Assets 复制到 /data/data//databases/ 使用:
private void copyDBFromAsssetsToDataFolder()
{
try
{
String destPath = "/data/data/" + getPackageName() + "/databases/dbname.db";
File f = new File(destPath);
if(!f.exists())
{
Log.v("TAG","File Not Exist");
InputStream in = getAssets().open("dbname.db");
OutputStream out = new FileOutputStream(destPath);
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0)
{
out.write(buffer, 0, length);
}
in.close();
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
Log.v("TAG","ioexeption");
e.printStackTrace();
}}
我的所有查询在模拟器中都可以正常工作,但在我收到的设备中:
打开目录时出错:/data/data/packagename/databases/
在这里,我正在阅读有同样问题的人,解决方案始终是为此目录分配权限或将数据库复制到外部存储。但在生产中,用户不必拥有 SD 卡,或者您不能强制用户为数据库(或其他)目录分配权限。
使用已经创建的数据库的最佳解决方案是什么?