情景:

做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如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开发:如何在卸载应用程序操作下,不删除原来程序数据库?相关推荐

  1. android handler 主线程吗,[android开发]非主线程进行handler操作

    [android开发]非主线程进行handler操作 (2012-10-30 16:26:01) 标签: 杂谈 android默认对主线程创建有消息队列及looper(looper是对消息队列的操作类 ...

  2. android权限--android开发中的权限及含义(下)

    android权限--android开发中的权限及含义(下) android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权 ...

  3. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

  4. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  5. Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout

    SwipeRefreshLayout 下拉刷新布局SwipeRefreshLayout是Android又一与时俱进的控件,顾名思义它随着用户手势向下滑动就会触发刷新操作.从实际的下拉效果来看,Swip ...

  6. linux加法计算器程序,Linux下实现一个计算器程序

    (集体内容详见ChinaUnix社区) 现在要在Linux下实现一个计算器程序, 它有如下的要求: 1.  能识别英文数字:比如 three hundred and ninety two, 要能转换为 ...

  7. 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 ...

  8. 后端比android简单,android开发怎么少的了后端(下)

    序言:之前我们讲解了一些简单后端开发的工具和基础,如果你还没有了解的话,请移步: 之前咱们讲了如何请求服务器,以及像数据库中存简单的数据,但是我们大家都知道,一个app中不可能只有文字的,还要有图片等 ...

  9. Android开发学习之仿手机QQ消息列表侧滑删除效果

    今天想和大家分享的是手机QQ消息列表侧滑删除效果,这种效果在IOS中被封装为一个列表控件,而手机QQ则是将这个功能移植到了Android上,换言之,这并非是手机QQ的独创.尽管如此,用户体验依然得到了 ...

最新文章

  1. 监控报警开发之zabbix语音电话报警方案联想
  2. 随机算法python_在python中实现随机选择
  3. JavaScript实现Knapsack problem背包问题算法(附完整源码)
  4. WebAPI返回数据类型
  5. webpack常用命令总结
  6. [IOI2018] werewolf 狼人
  7. Apollo自动驾驶入门课程第⑤讲 — 感知(下)
  8. css中分区显示php,CSS中7个你必须知道属性
  9. 我希望早几年知道的5个Unix命令
  10. Linux(Centos7)下安装Redis(redis-5.0.8)
  11. asterisk通话无声音_对讲机的语音通话间距到底有多远?对讲机的常见问题?
  12. oracle 写递归,请问一个递归sql的写法
  13. 爬取cloudmusic歌单
  14. 基于TCP协议的游戏代理接口测试工具<二>:工具架构与代理主体实现
  15. python樱花_python画樱花树代码 具体代码介绍
  16. 怎么将几个QQ对话窗口合并和分离
  17. tensorflow模型ckpt如何查看输入输出节点,以及转uff模型
  18. mac下启动/停止/重启mysql服务
  19. js reduce()
  20. Java 商品抢购系统设计,实现与优化

热门文章

  1. 智慧园区是未来发展的趋势吗?
  2. QL是高级的非过程化编程语言
  3. Uniapp video timeupdate计时器代替@ended提交视频进度
  4. Caused by: java.net.UnknownHostException: bogon: bogon: Name or service not known
  5. 浅谈接入云合同方式-E签宝平台(非标板)
  6. Unity_2D点击破碎
  7. Layui 2.8.0 正式发布,朴实归来
  8. 软件测试工程师笔试题(附带答案)
  9. 8086到80486的编号时代终结,第一次跻身财富500强和486阉割版处理器
  10. janusgraph整合mysql_JanusGraph的schema及数据建模