弹框--更新下载--安装

 1     /**
 2      * show出对话框
 3      */
 4     private void showUpdataDialog() {
 5         AlertDialog.Builder builder = new Builder(this);
 6         builder.setTitle("版本升级");
 7         builder.setMessage(info.getDescription());
 8         builder.setCancelable(false);
 9         builder.setPositiveButton("是", new OnClickListener() {
10             public void onClick(DialogInterface dialog, int which) {
11                 System.out.println("升级");
12                 // 判断SD卡状态是否可用
13                 if (Environment.getExternalStorageState().equals(
14                         Environment.MEDIA_MOUNTED)) {
15                     // 下载是耗时的工作,需要放入到子线程里面去执行
16                     DownLoadFileThreadTask download = new DownLoadFileThreadTask(
17                             info.getApkurl(), "/sdcard/new.apk");
18                     pd.show();
19                     new Thread(download).start();
20                     mainUI();
21                 } else {
22
23                 }
24             }
25         });
26         builder.setNegativeButton("否", new OnClickListener() {
27             public void onClick(DialogInterface dialog, int which) {
28                 System.out.println("不升级,进入主界面");
29                 mainUI();
30             }
31         });
32         builder.create().show();
33     }
34
35     /**
36      * 安装apk
37      */
38     private void installAPK(File file) {
39         Intent intent = new Intent();
40         intent.setAction(Intent.ACTION_VIEW);
41         intent.setDataAndType(Uri.fromFile(file),
42                 "application/vnd.android.package-archive");
43         finish();
44         startActivity(intent);
45     }
46
47     /**
48      * 下载APK
49      */
50     private class DownLoadFileThreadTask implements Runnable {
51         String apkurl;
52         String fileurl;
53
54         public DownLoadFileThreadTask(String apkurl, String fileurl) {
55             this.apkurl = apkurl;
56             this.fileurl = fileurl;
57         }
58
59         public void run() {
60             DownLoadFileTask down = new DownLoadFileTask();
61             try {
62                 File file = down.getFile(apkurl, fileurl, pd);
63                 System.out.println("下载完成,进行安装");
64                 pd.dismiss();
65                 installAPK(file);
66             } catch (Exception e) {
67                 e.printStackTrace();
68                 Toast.makeText(getApplicationContext(), "下载文件失败", 0).show();
69                 pd.dismiss();
70                 mainUI();
71             }
72         }
73     }
74
75     /**
76      * 获得版本号
77      */
78     private String getVession() {
79
80         try {
81             PackageManager pm = getPackageManager();
82             // 第一个参数获得包的名字
83             PackageInfo info = pm.getPackageInfo(getPackageName(), 0);
84             return info.versionName;
85         } catch (Exception e) {
86             // TODO Auto-generated catch block
87             e.printStackTrace();
88         }
89         return null;
90     }
 1 package cn.itcast.mobilesafe.engine;
 2
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.InputStream;
 6 import java.net.HttpURLConnection;
 7 import java.net.URL;
 8 import android.app.ProgressDialog;
 9
10 public class DownLoadFileTask {
11
12     /**
13      *
14      * @param path
15      *            服务器文件路径
16      * @param filepath
17      *            本地文件路径
18      * @return 本地文件对象
19      * @throws Exception
20      */
21     public static File getFile(String path, String filepath, ProgressDialog pd)
22             throws Exception {
23         URL url = new URL(path);
24         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
25         conn.setRequestMethod("GET");
26         conn.setConnectTimeout(5000);
27         if (conn.getResponseCode() == 200) {
28             int total = conn.getContentLength();
29             pd.setMax(total);
30             InputStream is = conn.getInputStream();
31             File file = new File(filepath);
32             FileOutputStream fos = new FileOutputStream(file);
33             byte[] buffer = new byte[1024];
34             int len = 0;
35             int process = 0;
36             while ((len = is.read(buffer)) != -1) {
37                 fos.write(buffer, 0, len);
38                 process += len;
39                 pd.setProgress(process);
40                 Thread.sleep(50);
41             }
42             fos.flush();
43             fos.close();
44             is.close();
45
46             return file;
47         }
48         return null;
49     }
50 }
时间: 2024-10-25 23:01:48

弹框--更新下载--安装的相关文章

sublimeText3安装package control和禁止弹出更新下载弹窗

1.sublimeText3安装package control import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join

CodePush自定义更新弹框及下载进度条

CodePush 热更新之自定义更新弹框及下载进度 先来几张弹框效果图 非强制更新场景 image 强制更新场景 image 更新包下载进度效果 image 核心代码 这里的热更新Modal框,是封装成一个功能独立的组件来使用的,需不需要更新以及是否为强制更新等逻辑均在组件内实现 image UpdateComp 热更新组件核心代码如下: /** * Created by guangqiang on 2018/3/29. */ import React, {Component} from 're

Android程序版本更新--通知栏更新下载安装(转)

Android应用检查版本更新后,在通知栏下载,更新下载进度,下载完成自动安装,效果图如下: 检查当前版本号 AndroidManifest文件中的versionCode用来标识版本,在服务器放一个新版本的apk,versioncode大于当前版本,下面代码用来获取versioncode的值 PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); int

Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome

在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC) 原文地址:https://www.cnblogs.com/ldl326308/p/10960755.html

ActiveX控件打包成Cab置于网页中自动下载安装 (转)

[背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册.但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值.那么面对这种情况,我们应该如何解决呢

[iOS] “是否允许“xxx”使用数据”,在iOS10之后,首次安装App会弹框让用户授权,问题解决方案。

一.为什么会弹 "是否允许使用数据"? 因为按照我们天朝的工信部要求,用户再使用应用的过程中,如果要使用移动数据必须要用户授权,其实这是好事,是为了保护用户的流量或者话费不会无端的被扣除.所以苹果在 iOS10 之后,在首次安装应用时会弹 "是否允许使用数据",然而只是在国行手机上才会弹,所以这也是为什么只是部分用户反馈会弹.而且这个弹框只会弹一次,即使卸载再安装也不会再弹,除非把手机系统重置.所以为了解决这个问题,我们技术的同学反复牺牲手机重置来测试这个问题.有可

jdk eclipse SDK下载安装及配置教程

原文地址https://blog.csdn.net/dr_neo/article/details/49870587 最新鲜最详细的Android SDK下载安装及配置教程 最近Neo突发神经,想要将学过的一些计算机视觉.机器学习中的算法都放到移动设备上去跑跑,因为移动开发是大势所趋嘛,希望能够通过这样一个实践的过程,找到一些新的灵感(该不会是为了赚钱吧-),我自己目前也有一些idea,然后也希望以后能够进行计算机视觉.机器学习方面的创业,如果有志同道合的朋友可以一起交流交流(可通过邮箱:[ema

Android SDK下载安装及配置教程

最近Neo突发神经,想要将学过的一些计算机视觉.机器学习中的算法都放到移动设备上去跑跑,因为移动开发是大势所趋嘛,希望能够通过这样一个实践的过程,找到一些新的灵感(该不会是为了赚钱吧-),我自己目前也有一些idea,然后也希望以后能够进行计算机视觉.机器学习方面的创业,如果有志同道合的朋友可以一起交流交流(可通过邮箱:[email protected]). 既然要做计算机视觉的移动开发,那么就要考虑是做ios还是Android了..当然还有winphone的.一直想做ios的开发,无奈啊,手头有

android sdk更新下载失败问题

第一次下载安装android sdk 失败: Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Fetched Add-ons List successfully Fetching URL: https://dl-ssl.google.com/android/repository/repository-8.xml Done loading packages. Fetching https://dl-ss