强制用户使用最新的安卓应用程序版本

13
在Android应用程序启动时,是否可能检查用户是否拥有最新版本的应用程序,并强制其进行更新?或者至少检查是否有新版本,并告知用户只有在下载和安装更新后才能再次使用该应用程序?
背景是我有一个需要与服务器通信的应用程序。当我在服务器和客户端之间的接口上进行更改时,我想确保客户端拥有最新版本。
有没有本地方法可以实现这一点?还是我必须自己检查呢?
这只有在您拥有MySQL数据库的情况下才能访问吗?是否可能仅使用网页上的纯文本并将其与当前应用程序版本进行检查?

好问题!欢迎来到SO! - Barmaley
不错的问题作为开端。+1 - N-JOY
这个开源的 GitHub 项目(MAHAndroidUpdater)完全提供了更新功能。试一试吧,非常简单。https://github.com/hummatli/MAHAndroidUpdater - Sattar Hummatli
1个回答

11

使用纯文本在网页上实现这个功能并检查当前应用程序版本,是否可行?

我的建议是:

在服务器上的文本文件中检查最新版本:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);

String latestVersion = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
    str.append(line);
}
in.close();
latestVersion = str.toString();

然后将其与已安装版本进行比较:

private String getSoftwareVersion() {
    try {
            PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
            return packageInfo.versionName;//EDIT: versionCode would be better
    } catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, "Package name not found", e);
    };
 }

抱歉,第一段代码应该放在哪里?我对 Android 服务器连接还不熟悉。 - Drake
你可以选择每天这样做,每次启动应用程序时这样做,每次从 Web 服务收到错误或未正确格式化的响应(因此您的代码肯定已更改),这取决于情况,没有正确答案...但我会说最后一个是最好的。 - Waza_Be
不,我的意思是在哪里放置HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request);String latestVersion = ""; InputStream in = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while((line = reader.readLine()) != null) { str.append(line); } in.close(); latestVersion = str.toString(); - Drake
也请您在需要更改特定服务器变量的地方添加 // 哈希标记。谢谢! - Drake
这个解决方案存在一些问题,我正在尝试在这里进行调查:https://dev59.com/1HbZa4cB1Zd3GeqPLOel - Ted

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接