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

作者:qq_25193681 时间:2023-10-28 03:41:51 

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

我当时是这么说的:

首先呢,我们是应该在用户登录后,在首页执行检查版本信息的操作,具体是,获取到本地的版本号后,提交给服务器进行判断,然后后台来告诉我们当前版本是否为最新版本,紧接着我们拿到下载地址,执行下载的操作,具体的可以使用输入输出流来对文件进行存储和读取,为了方便下载,我们还可以使用一个第三方框架: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的框架,所以没有这个框架是使用不了的。

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

标签:Android,版本,更新
0
投稿

猜你喜欢

  • c# 进程和线程的区别与联系

    2023-05-04 23:18:36
  • Android中通知Notification的使用方法

    2023-10-17 22:06:17
  • 浅析依赖注入框架Autofac的使用

    2023-04-19 22:23:31
  • springboot配置https访问的方法

    2022-12-11 16:17:37
  • SpringBoot项目中遇到的BUG问题及解决方法

    2022-01-19 14:44:38
  • IDEA新建springboot项目时未生成pom.xml文件的解决操作

    2022-08-22 03:16:31
  • SpringBoot java-jar命令行启动原理解析

    2022-02-02 10:32:22
  • 老生常谈Java中List与ArrayList的区别

    2023-03-26 19:52:33
  • EditPlus运行java时从键盘输入数据的操作方法

    2023-04-16 21:18:45
  • 详解C#通过反射获取对象的几种方式比较

    2021-07-26 17:45:55
  • Android中ListView如何分页加载数据

    2023-09-08 18:44:35
  • Java实现图片验证码具体代码

    2021-06-30 13:16:35
  • java nio基础使用示例

    2022-02-12 01:46:22
  • Android自定义控件之继承ViewGroup创建新容器

    2023-06-15 08:50:11
  • Java SpringBoot的相关知识点详解

    2023-11-23 02:36:35
  • 解析Mybatis SqlSessionFactory初始化原理

    2022-07-09 04:24:05
  • 基于android中权限的集合汇总

    2023-04-06 09:32:35
  • java实现上传文件类型检测过程解析

    2023-11-09 12:04:21
  • Spring Boot实现JWT token自动续期的实现

    2022-02-12 03:48:40
  • linux环境下java程序打包成简单的hello world输出jar包示例

    2023-11-26 11:11:37
  • asp之家 软件编程 m.aspxhome.com