在Android的app中,如果有版本更新时,会询问是否更新的对话框,点击更新之后,安装成功!
实现步骤:
Step1:读取版本号
我们使用到的类PackageManager,PackageManager主要是管理应用程序包,通过它就可以获取应用程序信息。
Step2:对比服务器中的版本
这里上传对比版本,是服务器端提供的端口
Step3:处理文件存放的位置(当然,这里需要对规定路径扫描,以免出现下载未安装需要重新下载)
这里应先判断是否存在SDCard,尽量不使用内存.
Step4:下载文件
服务器提供的更新接口中提供了最新版本的地址,我们只需要那最新版本的地址,使用HttpURLConnection类进行下载.
conn.getContentLength()可以获得文件的大小,再根据已下载的相除得到百分比,更新UI。
这里的已下载的是要保存文件的大小,这样可以避免存在已下载未安装的文件。
Step5:安装
- //apk文件的本地路径
- File apkfile = new File(apkFilePath);
- //会根据用户的数据类型打开android系统相应的Activity。
- Intent intent = new Intent(Intent.ACTION_VIEW);
- //设置intent的数据类型是应用程序application
- intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
- //为这个新apk开启一个新的activity栈
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- //开始安装
- startActivity(intent);
- //关闭旧版本的应用程序的进程
- android.os.Process.killProcess(android.os.Process.myPid());
这里有两个需要注意的地方
1.为新版本的应用程序创建一个新的activity栈
2.关闭旧版本应用程序的进程
没有这两句,安装完新软件,会出现闪退效果,需要手动找到图标重启才能进入新安装的软件.