我的客户有一个在Google Play上发布的应用,我们正在发布更新。应用程序发生了很大变化,由于之前的开发人员没有维护代码,我们不得不进行全新安装以使应用程序正常工作(无需花费无数小时来跟踪更改并编写迁移脚本)。
有没有办法强制用户在更新时卸载 - 重新安装(或自动卸载 - 重新安装)应用?
答案 0 :(得分:2)
据我所知,没有办法完全按照你的要求去做。但是,如果只有数据库更改,您只需重命名数据库文件,使您的应用程序开始使用新的数据库文件,并忽略旧文件。
示例:强>
// in your DatabaseHelper constructor
private DatabaseHelper(Context context) {
super(context, "new_database.db", null, DB_VERSION);
}
答案 1 :(得分:1)
听起来你几乎只想摆脱存储的数据。除了删除包数据目录中的所有文件外,您还可以只清除您不想拥有的数据。
foreach ($array as &$innerArray) {
$innerArray = array_filter($innerArray, function($arr) {
return (!empty($arr[0]));
});
}
unset($innerArray);
答案 2 :(得分:0)
如果要从应用程序中删除所有用户数据,可以使用以下代码。
public static void clearApplicationData() {
File cache = getInstance().getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
deleteDir(new File(appDir, s));
}
}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
return dir.delete();
}
其中getInstance()
是您的Application
班级实例
希望这会对你有所帮助。
答案 3 :(得分:0)
是的,如果该应用仅适用于Google Play,您可以强制用户卸载并重新安装。
只测试旧应用程序中是否存在任何非易失性存储变量,而不是在onResume()方法中更新的应用程序(如果是新安装的)。
如果存在,请设置一个不可取消的对话框,其中有一个按钮链接到Play商店的应用程序页面,按下按钮的指示,然后是商店页面上的“卸载”按钮,然后是该按钮上的“安装”按钮。同一商店页面。
这并不是说强制进行全新安装是一个好主意;这只是发布的问题的答案。
答案 4 :(得分:-1)
如果您只想擦除存储在数据库中的所有数据,可以增加数据库版本号。 Android会自动擦除以前版本中的所有数据。但我真的不建议这样做,因为您将删除与您的应用程序相关的所有用户数据,这可能会导致非常生气的用户不会使用您的新应用程序。