Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡

前言:

最近的项目中遇到系统恢复了出厂设置,data分区下的数据全被清空了,因为默认的sqlite数据库是放在/data/data/包名下的database目录下的。所以我想把数据库路径改下,放到SD卡上,不放到默热的data/data包名下面,这样系统就算是恢复了出厂设置数据也不会丢了。


参考博客

//http://blog.csdn.net/lime110/article/details/50685095

//http://www.cnblogs.com/linjzong/p/5045839.html

阅读下了SqliteOpenHelper的源码,和数据库路径相关部分如下。

Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡_第1张图片
Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡_第2张图片

其实是调用了mContext的getDataBasePath方法,这个方法是在ContextImpl中实现的,再看下源码

Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡_第3张图片

Android本身已经实现了自定义路径的方法了,只要传入的数据库名是以"/"开头后面接要存储的路径就行了。这样就不会再在data/data/包名下的database目录下创建数据库啦。

实现代码:

Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡_第4张图片
最后不要忘记,加上SD卡的读写权限

一句话总结:只要传入自定义完整路径数据库名就OK啦。。。。

你可能感兴趣的:(Android使用SQLiteOpenHelper更改数据库的存储路径到SD卡)