您的位置:首页 > 移动开发 > Android开发

使用七牛云存储实现Android版本更新

2016-07-21 15:06 519 查看
为了更新软件或修复Bug,我们通常需要实现应用更新。

1、自动更新的流程

我们将了解一下自动更新的思路。既然软件要自动更新,那么它必须知道自己是不是最新版本,那么我们就需要在某一个地方放跟版本和更新有关的信息,一般来讲,我们会在自己的网站上放一个记录版本信息的XML文本,还有我们的软件。当我们获取了版本信息,假设这时候需要更新,那么我们的软件会自动向服务器下载最新版本,然后用最新版本将老版本替换掉。具体的流程如下图所示



 

2、利用云存储空间实现自动更新

照着上面讲的流程,我们将慢慢实现:

1,编写版本信息文件
2,上传文件到云存储空间
3,使用相关的代码来实现

2.1现在我们来编写所需要的版本信息文件。后面,我们软件里面主要通过读取版本信息,来判断是否要更新,要更新的时候从这个文件中获取新版软件下载地址。我写了一个示例的,如下图。



2.2七牛是一个云存储服务商,用七牛来演示主要是因为他提供了一些免费空间。七牛空间的申请和上传文件可以参考文档。上传完版本信息文件,记录一下他的下载地址,以便后面用来检测是否有新版本。



2.3 解析XML相关的代码
/**
* 检查软件是否有更新版本
*
* @return
*/
public void checkUpdate() {
mHttpUtils = new HttpUtils();
RequestParams params = new RequestParams();

mHttpUtils.send(HttpMethod.GET, "http://7xrk2w.com1.z0.glb.clouddn.com/version.xml", params,
mRequestUpdataCallBack);
}

private RequestCallBack<String> mRequestUpdataCallBack = new RequestCallBack<String>() {

@Override
public void onStart() {
super.onStart();
Log.i(TAG, "请求的路径:" + this.getRequestUrl());
}

@Override
public void onFailure(HttpException arg0, String arg1) {

Log.i(TAG, "onFailure:" + arg1);
}

@Override
public void onSuccess(ResponseInfo<String> arg0) {
String json = arg0.result;
Log.i(TAG, "onSuccess:" + ":" + json);

InputStream in_nocode = new ByteArrayInputStream(json.getBytes());

// 获取当前软件版本
int versionCode = getVersionCode(mContext);

// 解析XML文件。 由于XML文件比较小,因此使用DOM方式进行解析
ParseXmlService service = new ParseXmlService();
try {
mHashMap = service.parseXml(in_nocode);
} catch (Exception e) {
e.printStackTrace();
}
if (null != mHashMap) {
int serviceCode = Integer.valueOf(mHashMap.get("version"));
// 版本判断
if (serviceCode > versionCode) {
showNoticeDialog();
}
} else
{
Toast.makeText(mContext, R.string.soft_update_no, Toast.LENGTH_LONG).show();
}
}
};

参考链接:

http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html
http://www.cnblogs.com/kissazi2/archive/2013/10/02/3349149.html
demo下载地址:
http://download.csdn.net/detail/u010963246/9582340
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: