`

android端版本更新

阅读更多
整个思路,先判断服务端当前版本是不是高于本地版本,高的话可以选择更新,如果没有新版本,则提示用户当前是最新版本
/**
* getVersionName(获取app版本号)
*
* @Title: getVersionName
* @Description: TODO
* @param @param ct
* @param @return 设定文件
* @return String 返回类型
* @throws
*/
public static String getVersionName(Context ct) {
String versionName = null;
PackageManager packageManager = ct.getPackageManager();
try {
PackageInfo packInfo = packageManager.getPackageInfo(
ct.getPackageName(), 0);
versionName = packInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return versionName;
}
/**
* isUpdate(是否更新)
*
* @Title: isUpdate
* @Description: TODO
* @param @param oldVersionName
* @param @param newVersionName
* @param @return 设定文件
* @return boolean 返回类型
* @throws
*/
public static boolean isUpdate(String newVersionName, String oldVersionName) {
boolean result = false;
try {
String n[] = newVersionName.split("\\.");
String o[] = oldVersionName.split("\\.");
for (int i = 0; i < n.length; i++) {
if (Integer.parseInt(n[i]) > Integer.parseInt(o[i])) {
return true;
}
if (Integer.parseInt(n[i]) < Integer.parseInt(o[i])) {
return false;
}

}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
这里用xutils做的网络请求
public void checkUpdate() {
new HttpUtils().send(HttpMethod.POST, RequestPath.ACTION_UPDATE,
new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {

}

@Override
public void onSuccess(ResponseInfo<String> arg0) {
try {
JSONObject jsonObject = new JSONObject(arg0.result);
if (jsonObject.getInt("code") == 1) {
Gson gson = new Gson();
final VersionUpdateDTO version = gson.fromJson(
jsonObject.getJSONObject("message")
.toString(),
VersionUpdateDTO.class);
String oldVersion = Utils
.getVersionName(ctx);
if (Utils.isUpdate(version.getBanbenNum(),
oldVersion)) {
update(version.getDownLoadUrl());
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}

private AppUpdateDialog appUpdateDialog;
private ProgressBar progressBar;
private TextView progressText;

/**
* @param url
*            更新APP
*/
public void update(String url) {
String target = Utils.getSDPath() + "/download";
String log = Utils.getSDPath() + "/log";
File file = new File(target);
File fileLog = new File(log);
if (fileLog.exists()) {
Utils.deleteFile(fileLog);
}
if (!file.exists()) {
file.mkdirs();
} else {
Utils.deleteFile(file);
file.mkdirs();
}
target = target + "/" + Utils.getFileName(url);
if (appUpdateDialog == null) {
appUpdateDialog = new AppUpdateDialog(ctx);
progressBar = (ProgressBar) appUpdateDialog
.findViewById(R.id.progress);
progressText = (TextView) appUpdateDialog
.findViewById(R.id.progressText);
}
try {
appUpdateDialog.show();
} catch (Exception e) {
e.printStackTrace();
}
new HttpUtils().download(url, target, true, true,
new RequestCallBack<File>() {

@Override
public void onStart() {
super.onStart();
DebugTools.d("开始下载");
}

@Override
public void onLoading(long total, long current,
boolean isUploading) {
super.onLoading(total, current, isUploading);
progressBar.setMax((int) total);
progressBar.setProgress((int) current);
progressText.setText("正在更新"
+ String.valueOf((int) (((double) current / total) * 100))
+ "%");
}

@Override
public void onSuccess(ResponseInfo<File> arg0) {
appUpdateDialog.dismiss();
File file = arg0.result;
Utils.install(ctx, file.toString());
}

@Override
public void onFailure(HttpException arg0, String arg1) {
if (appUpdateDialog != null) {
if (appUpdateDialog.isShowing()) {
appUpdateDialog.dismiss();
}
}
UIHelper.toastBar(ctx, "更新失败!errorcode="
+ arg0.getExceptionCode());
}
});
}
分享到:
评论

相关推荐

    Android APP版本更新源码

    在Android应用开发中,版本更新是必不可少的一部分,它确保用户能够及时获取到应用程序的最新功能和修复的安全漏洞。本文将详细解析如何实现一个Android APP版本更新功能,特别是结合进度条来实时显示下载进度。 ...

    android版本自动更新

    在Android平台上,实现应用的版本自动更新是一项重要的功能,它能确保用户始终使用到最新、最安全的软件版本。这个过程通常涉及到服务器端的更新管理、客户端的检测和下载以及安装流程。以下将详细讲解这一过程中的...

    Android版本更新项目源码

    在Android开发中,版本更新是确保用户始终使用最新、最安全的应用程序的重要环节。这个"Android版本更新项目源码"提供了一个自动更新代码的解决方案,开发者可以将其集成到自己的应用中,实现无缝的后台更新过程。...

    Android版本更新+附源代码

    Android应用的版本更新通常涉及到两个主要部分:客户端(用户手机上的应用程序)和服务器端(提供更新信息的服务器)。当客户端检测到有新版本可用时,会提示用户下载并安装。 二、XML配置文件的作用 在这个方案中...

    android 消息推送 版本更新

    在Android应用开发中,消息推送和版本更新是两个至关重要的功能。消息推送允许开发者与用户保持实时互动,而版本更新则确保用户始终使用最新、最安全的软件版本。本文将详细探讨这两个主题,并提供实现它们的基本...

    增量更新android端so库

    因此,增量更新Android端SO库成为了解决这个问题的有效方案。 增量更新的基本思想是只下载和替换自上次版本以来发生变化的部分,而不是重新下载整个库。这一过程涉及到多个步骤和技术: 1. **版本控制**:首先,每...

    android版本更新

    在Android平台上,版本更新是一个重要的功能,它允许用户获取应用的最新修复、增强性能和新特性。本篇文章将深入探讨如何实现从服务器到客户端的Android版本自动更新机制。 首先,我们要理解版本更新的基本流程,这...

    android 版本更新

    在Android平台上,版本更新是确保应用始终具备最新特性和安全性的关键环节。在这个过程中,开发者通常需要编写服务(Service)来检测当前应用的版本,并与服务器进行通信,以获取最新的软件版本信息。当有新版本可用...

    android 使用服务器进行版本更新

    本文将详细探讨如何实现“android 使用服务器进行版本更新”的功能,包括关键的技术点和步骤。 首先,我们要理解版本更新的基本流程。当用户打开应用时,我们需要检查服务器上是否存在新版本。这通常通过HTTP或...

    Android版本更新(检测、升级),检测版本,通过apk路径下载安装包

    在Android应用开发中,版本更新是维持应用活力和安全性的关键环节。本文将详细探讨如何在Android系统中实现版本检测、下载以及安装的过程,确保用户能够及时获取到最新的应用版本。 首先,我们要实现版本检测。这...

    Android不更新版本修改Icon

    下面我们将详细介绍如何在Android不更新版本的情况下修改应用图标。 1. **动态加载图标** - **使用自定义启动器**: 开发者可以创建一个自定义的Activity启动器,该启动器会在应用程序启动时动态加载并设置新的图标...

    Android版本更新,多线程下载、断点续传(原创)

    Android版本更新实用的Demo,主要用到了HttpURLConnection、Xml PULL解析(其中也提供了JSON格式的解析)、丰富的辅助类、多线程下载与断点续传,界面虽然丑点但比较实用。如果你下载了该资源无法运行的话,别急着...

    ANDROID程序自动更新.rar

    总结起来,这个DEMO涵盖了Android应用自动更新的整个流程,包括与服务器交互、版本比较、下载安装等关键步骤。开发者可以通过这个示例学习如何在自己的应用中实现这一功能,从而提高应用的更新效率和用户体验。同时...

    版本更新Demo

    在IT行业中,版本更新是软件开发过程中的一个重要环节,它涉及到新功能的添加、错误修复、性能优化等。本Demo主要展示了如何实现一个简洁而有效的版本更新、下载和安装流程,这对于任何应用程序的持续改进和用户体验...

    android在线版本更新源代码(update,json解析带注释)

    综上所述,通过使用JSON解析的在线版本更新系统,开发者可以方便地为Android应用提供及时的更新,确保用户始终运行最新、最稳定的应用版本。同时,要注意安全性和签名问题,确保更新过程的可靠性和用户体验。

    Android中增量更新

    这个过程需要在Android端实现,通常涉及C/C++编写的SO(Shared Object)库,因为处理二进制级别的操作可能需要更高的效率和性能。 在Android项目中,开发者会封装一个本地库(SO库),这个库包含了合并差分包的逻辑...

    qt for android 更新APP

    这通常会发送当前应用的版本号,服务器端会比较此版本号与最新可用版本,返回更新信息。 2. **下载更新包**:一旦检测到新版本,应用会提示用户下载更新。下载过程可以在后台进行,以便用户可以继续使用应用。通常...

    增量更新工具以及Android端源码实现

    Android增量更新简单描述: http://blog.csdn.net/yangzhaomuma/article/details/50767966 简单的说,就是在有一个旧版本A的情况下,想在这个基础上更新一个新版本B。那么,我们不需要下载整个B,只需要下载A与B的差...

    安卓Android源码——版本检测自动更新.zip

    12. **版本更新接口设计**:设计良好的API接口可以使服务器端轻松地更新和推送版本信息。 通过分析这个压缩包,开发者可以学习如何在Android应用中实现版本检测和自动更新功能,从而提升应用的更新率和用户体验。...

    Android服务器端交互服务器端源码

    在Android应用开发中,服务器端交互是至关重要的一个环节,它涉及到客户端与服务器之间的数据交换,使得用户可以在移动设备上实现各种功能,如登录、注册、数据同步等。本资源提供的"Android服务器端交互服务器端...

Global site tag (gtag.js) - Google Analytics