zoukankan      html  css  js  c++  java
  • Android开发之应用程序更新实现

    近期给项目app做升级。对Android应用程序更新稍有研究,分享一下我的心得。

    既然是更新,那么一定是要联网和下载的。所以联网和存储訪问权限时一定要有的:

    <!-- 权限申请 -->
        <uses-permission android:name="android.permission.INTERNET" /> <!-- 联网权限 -->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 存储权限 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    能够用xml的方式和数据库、php等方式检測升级版本号

    XML:

    <?

    xml version="1.0" encoding="utf-8"?>
    <update>
            <version>2.0<ersion>
            <description>这里写一些这个版本号的特点</description>
            <apkurl>填写应用下载下载地址</apkurl>
            <!--这里的ip地址一定要写你server所在的电脑的ip地址。我们会在Security这个文件夹以下放置一下new.apk的,用来更新的-->
    </update>

    匹配一下:

    public class UpdateInfoParser {
    public static UpdateInfo getUpdateInfo(InputStream is) throws Exception {
    UpdateInfo info = new UpdateInfo();
    XmlPullParser xmlPullParser = Xml.newPullParser();
    xmlPullParser.setInput(is, "utf-8");
    int type = xmlPullParser.getEventType();
    while (type != XmlPullParser.END_DOCUMENT) {
    switch (type) {
    case XmlPullParser.START_TAG:
    if (xmlPullParser.getName().equals("version")) {
    info.setVersion(xmlPullParser.nextText());
    } else if (xmlPullParser.getName().equals("description")) {
    info.setDescription(xmlPullParser.nextText());
    } else if (xmlPullParser.getName().equals("apkurl")) {
    info.setUrl(xmlPullParser.nextText());
    }
    break;
    default:
    break;
    }
    type = xmlPullParser.next();
    }
    return info;
    }
    }

    HTTP请求:

    public class UpdateInfoService {
    private Context context;

    public UpdateInfoService(Context context) {
    this.context = context;
    }

    public UpdateInfo getUpdateInfo(int urlId) throws Exception {
    String path = context.getResources().getString(urlId);// 拿到config.xml里面存放的地址
    URL url = new URL(path);
    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();// 开启一个http链接
    httpURLConnection.setConnectTimeout(5000);// 设置链接的超时时间,如今为5秒
    httpURLConnection.setRequestMethod("GET");// 设置请求的方式
    InputStream is = httpURLConnection.getInputStream();// 拿到一个输入流。里面包涵了update.xml的信息
    return UpdateInfoParser.getUpdateInfo(is);// 解析xml
    }
    }

    然后就能够依据与获取到的数据相比較而且下载更新了。

    其它的做法和这个类似,只是此种方式比較简单一些,也是最频繁的使用方式。


    个人辛勤劳动成果。如有转载,请注明出处,谢谢!

  • 相关阅读:
    Java transient 关键字
    Android学习资料收集
    mac 关闭&&显示隐藏文件命令
    Android 学习资源收集
    Android Studio 快捷键
    Volley框架使用笔记
    Jni :三维数组处理方法 ,以整形三维数组为例 C++实现
    Git使用- 基本命令
    Jni 调试 : eclipse + Vs 联合调试
    Java 调用 C++ (Java 调用 dll)康哥手把手教你
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6789999.html
Copyright © 2011-2022 走看看