• 大小: 0.06M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2020-12-27
  • 标签: Android  升级  

资源简介


由于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。把获取到的手机上应用版本与服务器端的版本进行比较,应用就可以判断处是否需要更新软件。


处理流程
            

                     


代码片段和文件信息

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package com.szy.update;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int btnUpdate=0x7f050000;
        public static final int update_progress=0x7f050001;
    }
    public static final class layout {
        public static final int main=0x7f030000;
        public static final int softupdate_progress=0x7f030001;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        280  2012-04-27 18:22  UpdateSoftDemo\.classpath

     文件        850  2012-04-27 18:22  UpdateSoftDemo\.project

     文件        117  2012-04-27 19:06  UpdateSoftDemo\.settings\org.eclipse.core.resources.prefs

     文件        911  2012-04-27 19:50  UpdateSoftDemo\AndroidManifest.xml

     文件      12496  2012-04-27 21:05  UpdateSoftDemo\bin\classes.dex

     文件        925  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\MainActivity$1.class

     文件        940  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\MainActivity.class

     文件       2386  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\ParsexmlService.class

     文件        328  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R$attr.class

     文件        388  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R$drawable.class

     文件        414  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R$id.class

     文件        425  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R$layout.class

     文件        699  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R$string.class

     文件        503  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\R.class

     文件       1011  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager$1.class

     文件        884  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager$2.class

     文件        852  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager$3.class

     文件        925  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager$4.class

     文件       3491  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager$downloadApkThread.class

     文件       6973  2012-04-27 21:05  UpdateSoftDemo\bin\com\szy\update\UpdateManager.class

     文件      11740  2012-04-27 21:05  UpdateSoftDemo\bin\resources.ap_

     文件      19997  2012-04-27 21:05  UpdateSoftDemo\bin\UpdateSoftDemo.apk

     文件        159  2012-04-27 19:55  UpdateSoftDemo\bin\version.xml

     文件        362  2012-04-27 18:22  UpdateSoftDemo\default.properties

     文件       1298  2012-04-27 19:50  UpdateSoftDemo\gen\com\szy\update\R.java

     文件       1159  2012-04-27 18:22  UpdateSoftDemo\proguard.cfg

     文件       4147  2012-04-27 18:22  UpdateSoftDemo\res\drawable-hdpi\icon.png

     文件       1723  2012-04-27 18:22  UpdateSoftDemo\res\drawable-ldpi\icon.png

     文件       2574  2012-04-27 18:22  UpdateSoftDemo\res\drawable-mdpi\icon.png

     文件        380  2012-04-27 18:25  UpdateSoftDemo\res\layout\main.xml

............此处省略30个文件信息

评论

共有 条评论