Android 一步一步实现版本自动更新(第一步 解析是否需要更新)

思路:

1、在tomcat上放置xml文件,文件里存放最新的版本号信息,客户端通过http的方式访问xml文件来获取最近的版本信息;

2、客户端比对版本信息来判断是否需要更新;

 

由于通过网络来访问xml文件,需要需要启用线程来进行xml文件的访问,同时将线程访问得到在hashmap传给主线程,主线程比对版本信息。

 

Tomcat上的配置如下:

E:\android\tomcat\conf  tomcat的配置目录:下的:server.xml文件的<host>中加入

<Context docBase="E:\MyEclipse\MYworkspace\zoomactechppm\versionupdatedir" path="/versionupdatedir"   ></Context>

docBase为xml文件的存放目录,path为http访问的子路径。

新版本的配置文件名为:versioninfo.xml

<xml version="1.0" encoding="utf-8">

  <appversion>10001</appversion>
  <appfilename>appfile01</appfilename>
  <appurl>http://localhost:8080/VersionUpdateDir/appfile01.apk</appurl>
</xml>

保证客户机通过http能访问xml.显示结果如下图:


代码如下:

//ParseVersionInfo类为工具类,用来解析xml文件的内容,通过hasmap的方式返回。

package com.zoomactech.projectprogressmanager.tools;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.PublicKey;
import java.util.HashMap;

import javax.security.auth.PrivateCredentialPermission;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.os.Handler;
import android.util.Log;

public class ParseVersionInfo {

 private HashMap<String, String> resulthashMap = new HashMap<String, String>();

//创建获取配置信息的方法,通过hashmap的方式返回最近版本信息。

 public HashMap<String, String> parseXml(final String url) throws Exception {

  
  class Newthread extends Thread{

    public void run() {

     // TODO Auto-generated method stub

     // TODO Auto-generated method stub

     // TODO Auto-generated method stub
     URL versioncheckurl = null;
     try {
      versioncheckurl = new URL(url);

     } catch (Exception e) {
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IntroductionProgressManager 一行代码即可监听 App 中所有网络链接的上传以及下载进度,包括 Glide 的图片加载进度,实现原理类似 EventBus,你可在 App 中的任何地方,将多个监听器,以 Url 地址作为标识符,注册到本框架,当此 Url 地址存在下载或者上传的动作时,框架会主动调用所有使用此 Url 地址注册过的监听器,达到多个模块的同步更新.框架的构思和实现可以看这篇文章Feature使用简单,只需一行代码即可实现进度监听.多平台支持,支持 Okhttp , Retrofit , Glide ,使用 Okhttp 原生 Api ,不存在兼容问题.低耦合,实际请求端和进度接收端并不存在直接或间接的关联关系,即可以在 App 任何地方接收进度信息.侵入性低,使用本框架你并不需要更改之前进行上传或下载的代码,即使用或不使用本框架并不会影响到原有的代码.多端同步,同一个数据源的上传或下载进度可以指定多个不同的接收端,少去了使用 EventBus 实现多个端口同步更新进度.自动管理监听器,少去了手动注销监听器的烦恼.默认运行在主线层,少去了切换线程的烦恼.轻量级框架,不包含任何三方库,体积极小.Download compile 'me.jessyan:progressmanager:1.2.5'UsageStep 1 // 构建 OkHttpClient 时,将 OkHttpClient.Builder() 传入 with() 方法,进行初始化配置  OkHttpClient = ProgressManager.getInstance().with(new OkHttpClient.Builder())                 .build();Step 2 // Glide 下载监听  ProgressManager.getInstance().addResponseListener(IMAGE_URL, getGlideListener()); // Okhttp/Retofit 下载监听  ProgressManager.getInstance().addResponseListener(DOWNLOAD_URL, getDownloadListener()); // Okhttp/Retofit 上传监听  ProgressManager.getInstance().addRequestLisenter(UPLOAD_URL, getUploadListener());ProGuard -keep class me.jessyan.progressmanager.** { *; }  -keep interface me.jessyan.progressmanager.** { *; }About MeEmail: [email protected]: http://jessyan.me掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613简书: http://www.jianshu.com/u/1d0c0bc634db

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值