版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Leo_eight/article/details/51598655
要把SQLite数据库与apk一起打包很简单,只要把数据库导出,并放在assets文件夹中,app首次打开时加载就可以了。
但有个问题:没root的手机不能通过DDMS查看/data/的文件(数据库保存在这里)。我们只能通过adb shell来获取数据库文件了。
打开命令行,输入以下命令:
run as [package_name];
cd /data/data/[package_name]/databases
cat test.db > /mnt/sdcard/test.db
ps. [package_name]输入你的应用程序的包名。
然后就可以在sdcard里多了一个test.db文件了,将其复制到assets文件中,app首次打开时加载就好。
private static final String DATABASE_PATH = "/data/data/com.leo.test/databases/";
private static final String DATABASE_NAME = "test.db";
public void initDB() {
File fileDB = new File(DATABASE_PATH + DATABASE_NAME);
if(!fileDB.exists()) {
File file = new File(DATABASE_PATH);
if(!file.exists())
file.mkdirs();
try {
InputStream is = mContext.getAssets().open(DATABASE_NAME);
OutputStream os = new FileOutputStream(DATABASE_PATH + DATABASE_NAME);
byte[] buffer = new byte[1024];
int len;
while((len = is.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
os.flush();
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}