android开发:如何在卸载应用程序操作下,不删除原来程序数据库?
情景:
做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如sqlite3数据库中的数据,为了避免用户卸载应用程序操作下,不会删掉原来的数据。
实现:
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();}//重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) {SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);return result;}//Android 4.0会调用此方法获取数据库。@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory,DatabaseErrorHandler errorHandler) {SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);return result;}@Overridepublic File getDatabasePath(String name) {File parentFile = new File(Environment.getExternalStorageDirectory() + File.separator +"smartDB" + File.separator);if(!parentFile.exists()){boolean mkParentRes = parentFile.mkdirs();}File realDBFile = new File(parentFile,name);if(!realDBFile.exists()){try {realDBFile.createNewFile();} catch (IOException e) {e.printStackTrace();}}return realDBFile;}}
参考资料:
android 数据库更改数据库位置
android开发:如何在卸载应用程序操作下,不删除原来程序数据库?相关推荐
- android handler 主线程吗,[android开发]非主线程进行handler操作
[android开发]非主线程进行handler操作 (2012-10-30 16:26:01) 标签: 杂谈 android默认对主线程创建有消息队列及looper(looper是对消息队列的操作类 ...
- android权限--android开发中的权限及含义(下)
android权限--android开发中的权限及含义(下) android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权 ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout
SwipeRefreshLayout 下拉刷新布局SwipeRefreshLayout是Android又一与时俱进的控件,顾名思义它随着用户手势向下滑动就会触发刷新操作.从实际的下拉效果来看,Swip ...
- linux加法计算器程序,Linux下实现一个计算器程序
(集体内容详见ChinaUnix社区) 现在要在Linux下实现一个计算器程序, 它有如下的要求: 1. 能识别英文数字:比如 three hundred and ninety two, 要能转换为 ...
- android 开发问题集(一):SDK更新后 运行程序报错Location of the Android SDK has not been setup in the preferences
SDK更新后 运行程序报错Location of the Android SDK has not been setup in the preferences 问题描述:android跟新后报错loca ...
- 后端比android简单,android开发怎么少的了后端(下)
序言:之前我们讲解了一些简单后端开发的工具和基础,如果你还没有了解的话,请移步: 之前咱们讲了如何请求服务器,以及像数据库中存简单的数据,但是我们大家都知道,一个app中不可能只有文字的,还要有图片等 ...
- Android开发学习之仿手机QQ消息列表侧滑删除效果
今天想和大家分享的是手机QQ消息列表侧滑删除效果,这种效果在IOS中被封装为一个列表控件,而手机QQ则是将这个功能移植到了Android上,换言之,这并非是手机QQ的独创.尽管如此,用户体验依然得到了 ...
最新文章
- 监控报警开发之zabbix语音电话报警方案联想
- 随机算法python_在python中实现随机选择
- JavaScript实现Knapsack problem背包问题算法(附完整源码)
- WebAPI返回数据类型
- webpack常用命令总结
- [IOI2018] werewolf 狼人
- Apollo自动驾驶入门课程第⑤讲 — 感知(下)
- css中分区显示php,CSS中7个你必须知道属性
- 我希望早几年知道的5个Unix命令
- Linux(Centos7)下安装Redis(redis-5.0.8)
- asterisk通话无声音_对讲机的语音通话间距到底有多远?对讲机的常见问题?
- oracle 写递归,请问一个递归sql的写法
- 爬取cloudmusic歌单
- 基于TCP协议的游戏代理接口测试工具<二>:工具架构与代理主体实现
- python樱花_python画樱花树代码 具体代码介绍
- 怎么将几个QQ对话窗口合并和分离
- tensorflow模型ckpt如何查看输入输出节点,以及转uff模型
- mac下启动/停止/重启mysql服务
- js reduce()
- Java 商品抢购系统设计,实现与优化
热门文章
- 智慧园区是未来发展的趋势吗?
- QL是高级的非过程化编程语言
- Uniapp video timeupdate计时器代替@ended提交视频进度
- Caused by: java.net.UnknownHostException: bogon: bogon: Name or service not known
- 浅谈接入云合同方式-E签宝平台(非标板)
- Unity_2D点击破碎
- Layui 2.8.0 正式发布,朴实归来
- 软件测试工程师笔试题(附带答案)
- 8086到80486的编号时代终结,第一次跻身财富500强和486阉割版处理器
- janusgraph整合mysql_JanusGraph的schema及数据建模