App实现自动更新

来源:互联网 发布:中国房地产 知乎。 编辑:程序博客网 时间:2024/05/20 03:41

在Android的app中,如果有版本更新时,会询问是否更新的对话框,点击更新之后,安装成功!


实现步骤:


Step1:读取版本号

我们使用到的类PackageManager,PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息。

[java] view plain copy
  1. PackageManager packageManager = this.getPackageManager();  
  2. String version = "";  
  3. try {//获得包的信息   
  4.     PackageInfo packInfo = packageManager.getPackageInfo(this.getPackageName(), 0);  
  5.     version = packInfo.versionName;//获取版本  
  6. catch (NameNotFoundException e) {  
  7.     e.printStackTrace();  
  8. }  

Step2:对比服务器中的版本

这里上传对比版本,是服务器端提供的端口



Step3:处理文件存放的位置(当然,这里需要对规定路径扫描,以免出现下载未安装需要重新下载)

这里应先判断是否存在SDCard,尽量不使用内存.



Step4:下载文件

服务器提供的更新接口中提供了最新版本的地址,我们只需要那最新版本的地址,使用HttpURLConnection类进行下载.

conn.getContentLength()可以获得文件的大小,再根据已下载的相除得到百分比,更新UI。

这里的已下载的是要保存文件的大小,这样可以避免存在已下载未安装的文件。



Step5:安装


[java] view plain copy
  1. //apk文件的本地路径  
  2. File apkfile = new File(apkFilePath);  
  3. //会根据用户的数据类型打开android系统相应的Activity。  
  4. Intent intent = new Intent(Intent.ACTION_VIEW);  
  5. //设置intent的数据类型是应用程序application  
  6. intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");  
  7. //为这个新apk开启一个新的activity栈  
  8. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  9. //开始安装  
  10. startActivity(intent);  
  11. //关闭旧版本的应用程序的进程  
  12. android.os.Process.killProcess(android.os.Process.myPid());  


这里有两个需要注意的地方

1.为新版本的应用程序创建一个新的activity栈

2.关闭旧版本应用程序的进程

没有这两句,安装完新软件,会出现闪退效果,需要手动找到图标重启才能进入新安装的软件.