【问题标题】:How to handle version changes in an Android app如何处理 Android 应用程序中的版本更改
【发布时间】:2021-03-06 07:21:44
【问题描述】:

当我开发 Android 应用程序时,我通常手动处理版本之间的更改(通过将当前版本代码与 SharedPreferences. 我搜索了一个可以以更适当的方式处理它的库(我使用 switch case),但我没有找到任何东西。

我的第一个问题,是否有图书馆可以做到这一点? 我发现一些库可以检查 Google Play 上是否有新版本的应用程序可用,但不处理版本之间的更改。

如果没有,我写了一篇关于一个 (https://github.com/nawrasg/AppUpdater) 的草稿。示例 (https://github.com/nawrasg/AppUpdater/blob/main/app/src/main/java/fr/nawrasg/appupdaterexample/App.kt) 显示了我的想法。 但是,我想到了几个问题:

  • 版本更新后如何处理成功和失败?一个简单的布尔返回就足够了?
  • 我还在考虑添加成功和失败的回调以执行有关版本的某些操作(例如显示模式或 toast)。
  • 通常用户会按版本更新应用程序版本 (v1 --> v2, v2 --> v3),但有些用户可能会跳过一些 (v1 --> v3)。如何应对全球成功?捕获每个步骤的布尔值,然后验证所有步骤是否为真?
  • 如何处理迁移块内的异步调用,因为简单的返回不起作用?使用处理程序?如果是这样,如何同时处理同步和异步迁移?

非常感谢,

【问题讨论】:

  • 要求查找库对于 StackOverflow 来说是题外话。您的其余问题都是基于意见的,这也是题外话。

标签: android kotlin version


【解决方案1】:

试试这个并从 google play store 获取你的版本

public class VersionChecker extends AsyncTask<String, String, String> {

String newVersion;

@Override
protected String doInBackground(String... params) {

    try {
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + "your package name" + "&hl=en")
                .timeout(30000)
                .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                .referrer("http://www.google.com")
                .get()
                .select("div.hAyfc:nth-child(4) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)")
                .first()
                .ownText();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return newVersion;
}
}

然后将您的应用当前版本与谷歌应用版本进行比较

   val version = VersionChecker()
    val versionName = version.execute().get()
    var currentVersion: String = ""

    //get current version
    try {
        val info = context?.packageManager?.getPackageInfo(activity?.packageName ?: "1.0", 0)
        currentVersion = info?.versionName.toString()
    } catch (ex: Exception) {
        ex.printStackTrace()
    }
      
  

【讨论】:

  • 正如我在问题中提到的,我不是要检查是否有新版本可用(为此目的已经存在库),而是要处理两个版本之间的更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多