要求用户在更新时卸载以前的Android应用版本

时间:2016-05-05 15:41:49

标签: android google-play

我的客户有一个在Google Play上发布的应用,我们正在发布更新。应用程序发生了很大变化,由于之前的开发人员没有维护代码,我们不得不进行全新安装以使应用程序正常工作(无需花费无数小时来跟踪更改并编写迁移脚本)。

有没有办法强制用户在更新时卸载 - 重新安装(或自动卸载 - 重新安装)应用?

5 个答案:

答案 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会自动擦除以前版本中的所有数据。但我真的不建议这样做,因为您将删除与您的应用程序相关的所有用户数据,这可能会导致非常生气的用户不会使用您的新应用程序。