如何处理 Android 应用程序中的版本更改
Posted
技术标签:
【中文标题】如何处理 Android 应用程序中的版本更改【英文标题】:How to handle version changes in an Android app 【发布时间】: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)。如何应对全球成功?捕获每个步骤的布尔值,然后验证所有步骤是否为真? 如何处理迁移块内的异步调用,因为简单的返回不起作用?使用处理程序?如果是这样,如何同时处理同步和异步迁移?非常感谢,
【问题讨论】:
要求查找库对于 *** 来说是题外话。您的其余问题都是基于意见的,这也是题外话。 【参考方案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()
【讨论】:
正如我在问题中提到的,我不是要检查是否有新版本可用(为此目的已经存在库),而是要处理两个版本之间的更改。以上是关于如何处理 Android 应用程序中的版本更改的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 tvOS 和 Android TV 之间的 React Native 应用程序中的缩放问题?