1.先创建一个Bean类,里面定义 路径和当前的版本号,创建方法
private int versionCode=100; private String path; 2.获取当前版本信息private String url="http://125.39.134.47/r/a.gdown.baidu.com/data/wisegame/7c28ac069399b336/kuaishou_4812.apk"; private String baopath=Environment.getExternalStorageDirectory()+"/。。。/kuaishou.apk"; private Callback.Cancelable get; private ProgressDialog dialog;try { //获取包的管理类 PackageManager packageManager = getActivity().getPackageManager(); //获取包的信息 PackageInfo packageInfo = packageManager.getPackageInfo(getActivity().getPackageName(),0); //获取当前的版本号 int xianversionCode = packageInfo.versionCode; //在用抓包工具,把下载路径抓下来 BanBen_Bean version=new BanBen_Bean(); //把路径装到对象里 version.setPath(url); //现在版本小于请求请求下来的版本 if(xianversionCode<version.getVersionCode()) { //更新保存路径 File file= new File(baopath); //路径不等于空并且存在 if(file!=null&&file.exists()) { //直接走安装方法 install(file); } //走下载方法 else { xiaz(); } } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }
3.创建一个对话框private void progressdialog(){ dialog = new ProgressDialog(getActivity()); //设置进度形式 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置暂停按钮 dialog.setButton(ProgressDialog.BUTTON_NEGATIVE,"暂停", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //取消 get.cancel(); } }); } 4.下载方法RequestParams params=new RequestParams(url); //设置支持断点续传 params.setAutoResume(true); //设置支持立即取消 params.setCancelFast(true); //判断sdcard是否是挂载状态 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { params.setSaveFilePath(baopath); } //Progress下载方式 get = x.http().get(params, new Callback.ProgressCallback<File>() { //成功 @Override public void onSuccess(File result) { //直接走安装方法 install(result); } //失败 @Override public void onError(Throwable ex, boolean isOnCallback) { } //取消 @Override public void onCancelled(CancelledException cex) { } //结束 @Override public void onFinished() { } //等待 @Override public void onWaiting() { } //开始 @Override public void onStarted() { //开始显示对话框 dialog.show(); } //过程中 @Override public void onLoading(long total, long current, boolean isDownloading) { if (isDownloading==true) { //最大的进度 dialog.setMax((int) total); //当前的进度 dialog.setProgress((int) current); } } });5.安卓固定的安装方法 private void install(File file) { //调用系统安装器 Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.parse("file://" + file.getAbsolutePath()), "application/vnd.android.package-archive"); startActivity(intent); }