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

情景:

做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如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 数据库更改数据库位置