欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

非常实用的小功能 Android应用版本的更新实例

程序员文章站 2024-03-07 08:10:26
每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作。我当时因为做过这个功能,所以回答的还是很流畅,现在我把这...

每一个应用都是具备一个功能,那就是版本更新,我记得我之前在面试的时候,面试官让我介绍一下应用版本更新的一些具体操作。我当时因为做过这个功能,所以回答的还是很流畅,现在我把这个分享给大家,需要能够共同进步。

我当时是这么说的:

首先呢,我们是应该在用户登录后,在首页执行检查版本信息的操作,具体是,获取到本地的版本号后,提交给服务器进行判断,然后后台来告诉我们当前版本是否为最新版本,紧接着我们拿到下载地址,执行下载的操作,具体的可以使用输入输出流来对文件进行存储和读取,为了方便下载,我们还可以使用一个第三方框架:xutils,有这个框架,可以更好的实现断点续传等等一下功能,最后我们将下载好的文件,调用系统的安装界面,进行安装,自此我们的更新操作全部完成,当然,有一个很重要的地方,那就是别忘了添加权限:

    <uses-permission android:name="android.permission.internet"/>
    <uses-permission android:name="android.permission.write_external_storage"/>
    <uses-permission android:name="android.permission.mount_unmount_filesystems"/>

一般情况下,这么回答就差不多可以达到效果了。

下面我们看看具体的代码实现,我这里以“大众点评”的app下载为案例
看看activity的操作:

public class mainactivity extends activity {
  private progressdialog dialog;


  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    initview();
  }
  private void initview() {
    alertdialog.builder dialogtips= new alertdialog.builder(this);
    dialogtips.settitle("提示");
    dialogtips.setmessage("检测到有新的版本,是否更新?");
    dialogtips.setnegativebutton("取消", null);
    dialogtips.setpositivebutton("更新", new onclicklistener() {

      @override
      public void onclick(dialoginterface arg0, int arg1) {
        startdownload();
      }
    });
    dialogtips.show();

    dialog=new progressdialog(this);
    dialog.setprogressstyle(progressdialog.style_horizontal);
    dialog.setmessage("更新应用");
    dialog.setmax(100);
  }
  private void startdownload(){
    //定义保存的文件地址为根目录
    file path = new file(environment.getexternalstoragedirectory(),
        "大众点评"+ ".apk");
    httpdownload(path.getpath(), "http://www.wandoujia.com/apps/com.dianping.v1/download");

  }

  /**
   * 下载的方法
   * @param path 文件保存的路径
   * @param url 下载的地址
   */
  private void httpdownload(string path, string url) {
    httputils http = new httputils();
    http.download(url, path, true, true, new requestcallback<file>() {

      @override
      public void onstart() {
        super.onstart();
        dialog.show();
      }

      @override
      public void onloading(long total, long current, boolean isuploading) {
        int index = (int) (current * 100 / total);
        dialog.setprogress(index);
      }


      @override
      public void onsuccess(responseinfo<file> responseinfo) {
        //获取到安装包后,调用系统的android安装apk界面进行安装 这是固定格式
        intent intent = new intent(intent.action_view);
        intent.setdataandtype(
            uri.fromfile(new file(responseinfo.result.getpath())),
            "application/vnd.android.package-archive");
        startactivity(intent);
        dialog.dismiss();
        mainactivity.this.finish();
      }

      @override
      public void onfailure(
          com.lidroid.xutils.exception.httpexception arg0, string arg1) {
        file path = new file(environment.getexternalstoragedirectory(),
            "大众点评" + ".apk");
        toast.maketext(mainactivity.this, "下载失败"+arg1, 0).show();
        dialog.dismiss();
        path.delete();
      }
    });
  }

}

这里的注释也是相当的清晰,我就不在赘述,但是有一个要注意的地方,我这里是用到了xutils的框架,所以没有这个框架是使用不了的。

最后我附上源代码,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。