目标和环境
最近项目中需要事实存储监测的数据,于是使用SQLiteOpenHelper来实现。事后又要导出到分析软件分析,所以必须将db文件放到指定的位置。SQLiteOpenHelper默认的位置只有app自己访问,想导出来很麻烦。一番搜索和试错后,终于实现功能。手机版本是android6.0,studio3.5.2。
虽然csdn上面能看到不少相关的文章,奈何google更猛。所以好多文章照着做也是失败。最后终于在stackoverflow这个问题下面k3b大佬的回复找到了解决方法。
代码
自己写的SQLiteOpenHelper类中间要有如下的改动:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 3;
.....
DatabaseHelper(final Context context, String databaseName) {
super(new DatabaseContext(context), databaseName, null, DATABASE_VERSION);
}
}
创件一个DatabaseContext类继承ContextWrapper并重写getDatabasePath和openOrCreateDatabase
class DatabaseContext extends ContextWrapper {
private static final String DEBUG_CONTEXT = "DatabaseContext";

在Android项目中,为了方便数据库文件的导出与分析,需要将SQLiteOpenHelper创建的数据库放置在指定位置。针对Android 6.0系统,通过继承ContextWrapper创建DatabaseContext类,并重写相关方法来改变数据库路径。同时,为了实现外部存储的读写,需要处理6.0及以上版本的动态权限申请。完成以上步骤,可以成功在指定路径创建SQLite数据库。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



