Android应用APP自动更新功能的代码实现

由于Android项目开源所致,市面上出现了N多安卓软件市场。为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量。因此我们有必要给我们的Android应用增加自动更新的功能。

既然实现自动更新,我们首先必须让我们的应用知道是否存在新版本的软件,因此我们可以在自己的网站上放置配置文件,存放软件的版本信息:

<update> 
  <version>2</version> 
  <name>baidu_xinwen_1.1.0</name> 
  <url>http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk</url> 
</update> 

在这里我使用的是XML文件,方便读取。由于XML文件内容比较少,因此可通过DOM方式进行文件的解析:

public class ParseXmlService 
{ 
  public HashMap<String,String> parseXml(InputStream inStream) throws Exception 
  { 
    HashMap<String,String> hashMap = new HashMap<String,String>(); 
     
    // 实例化一个文档构建器工厂 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    // 通过文档构建器工厂获取一个文档构建器 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    // 通过文档通过文档构建器构建一个文档实例 
    Document document = builder.parse(inStream); 
    //获取XML文件根节点 
    Element root = document.getDocumentElement(); 
    //获得所有子节点 
    NodeList childNodes = root.getChildNodes(); 
    for (int j = 0; j < childNodes.getLength(); j++) 
    { 
      //遍历子节点 
      Node childNode = (Node) childNodes.item(j); 
      if (childNode.getNodeType() == Node.ELEMENT_NODE) 
      { 
        Element childElement = (Element) childNode; 
        //版本号 
        if ("version".equals(childElement.getNodeName())) 
        { 
          hashMap.put("version",childElement.getFirstChild().getNodeValue()); 
        } 
        //软件名称 
        else if (("name".equals(childElement.getNodeName()))) 
        { 
          hashMap.put("name",childElement.getFirstChild().getNodeValue()); 
        } 
        //下载地址 
        else if (("url".equals(childElement.getNodeName()))) 
        { 
          hashMap.put("url",childElement.getFirstChild().getNodeValue()); 
        } 
      } 
    } 
    return hashMap; 
  } 

 通过parseXml()方法,我们可以获取服务器上应用的版本、文件名以及下载地址。紧接着我们就需要获取到我们手机上应用的版本信息:

 /** 
 * 获取软件版本号 
 * 
 * @param context 
 * @return 
 */ 
private int getVersionCode(Context context) 
{ 
  int versionCode = 0; 
  try 
  { 
    // 获取软件版本号, 
    versionCode = context.getPackageManager().getPackageInfo("com.szy.update",0).versionCode; 
  } catch (NameNotFoundException e) 
  { 
    e.printStackTrace(); 
  } 
  return versionCode; 
} 

通过该方法我们获取到的versionCode对应AndroidManifest.xml下android:versionCode。android:versionCode和android:versionName两个属性分别表示版本号,版本名称。versionCode是整数型,而versionName是字符串。由于versionName是给用户看的,不太容易比较大小,升级检查时,就可以检查versionCode。把获取到的手机上应用版本与服务器端的版本进行比较,应用就可以判断处是否需要更新软件。

处理流程


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

以上是来客网为你收集整理的Android应用APP自动更新功能的代码实现全部内容,希望文章能够帮你解决Android应用APP自动更新功能的代码实现所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。