前言:
最近的项目中遇到系统恢复了出厂设置,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的源码,和数据库路径相关部分如下。
其实是调用了mContext的getDataBasePath方法,这个方法是在ContextImpl中实现的,再看下源码
Android本身已经实现了自定义路径的方法了,只要传入的数据库名是以"/"开头后面接要存储的路径就行了。这样就不会再在data/data/包名下的database目录下创建数据库啦。
实现代码:
最后不要忘记,加上SD卡的读写权限一句话总结:只要传入自定义完整路径数据库名就OK啦。。。。
网友评论