您的位置:首页 > 移动开发 > Android开发

android开发:如何在卸载应用程序操作下,不删除原来程序数据库?

2018-01-08 18:19 671 查看

情景:

做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如sqlite3数据库中的数据,为了避免用户卸载应用程序操作下,不会删掉原来的数据。

实现:

public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

}

//重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) {
SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);
return result;
}

//Android 4.0会调用此方法获取数据库。
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory,
DatabaseErrorHandler errorHandler) {
SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);
return result;
}

@Override
public 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 数据库更改数据库位置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: