多线程下载Apk并提示安装

移动开发
本项目是一个多线程下载应用并提示是否安装的小例子,从网上下载apk存储到手机指定目录,可以在通知栏显示下载进度进度,下载完成后会有一个对话框提示用户是否安装,如果不需要可以删除,项目有非常非常详细的中文目录,项目涉及知识:文件流、网络下载链接协议、读写权限、Handler、Notification、跑马灯。

源码简介
本项目是一个多线程下载应用并提示是否安装的小例子,从网上下载apk存储到手机指定目录,可以在通知栏显示下载进度进度,下载完成后会有一个对话框提示用户是否安装,如果不需要可以删除,项目有非常非常详细的中文目录,项目涉及知识:文件流、网络下载链接协议、读写权限、Handler、Notification、跑马灯。
源码运行截图

源码片段

 

  1. // 下载APK的线程匿名类START 
  2.     private Runnable mdownApkRunnable = new Runnable() { 
  3.         @Override 
  4.         public void run() { 
  5.             try { 
  6.                 URL url = new URL(apkDownloadPath); 
  7.                 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
  8.                 conn.connect(); 
  9.                 int length = conn.getContentLength(); 
  10.                 InputStream is = conn.getInputStream(); 
  11.   
  12.                 File file = new File(savePath); 
  13.                 Log.e("test", file.exists()+""); 
  14.                 if (!file.exists()) { 
  15.                     Log.e("test1", file.exists()+""); 
  16.                     file.mkdir(); 
  17.                     Log.e("test2", file.exists()+""); 
  18.                 } 
  19.                 String apkFile = saveFileName; 
  20.                 Log.e("test3", apkFile); 
  21.                 File ApkFile = new File(apkFile); 
  22.                 FileOutputStream fos = new FileOutputStream(ApkFile); 
  23.   
  24.                 int count = 0
  25.                 byte buf[] = new byte[1024]; 
  26.                 do { 
  27.                     int numread = is.read(buf); 
  28.                     count += numread; 
  29.                     progress = (int) (((float) count / length) * 100); 
  30.                     if(handmsg < progress){ 
  31.                         handmsg ++; 
  32.                         mHandler.sendEmptyMessage(DOWN_UPDATE); 
  33.                     } 
  34.                     // 更新进度 
  35.                     if (numread <= 0) { 
  36.                         // 下载完成通知安装 
  37.                         mHandler.sendEmptyMessage(DOWN_OVER); 
  38.                         break
  39.                     } 
  40.                     fos.write(buf, 0, numread); 
  41.                 } while (true);// 点击取消就停止下载. 
  42.                 fos.close(); 
  43.                 is.close(); 
  44.             } catch (MalformedURLException e) { 
  45.                 e.printStackTrace(); 
  46.             } catch (IOException e) { 
  47.                 e.printStackTrace(); 
  48.                 Log.e("test", e.getMessage()); 
  49.             } 
  50.         } 
  51.     }; 

源码链接:http://down.51cto.com/data/1968727

责任编辑:chenqingxiang 来源: 网络整理
相关推荐

2015-02-03 15:06:23

android多线程下载

2011-05-31 13:29:40

Android 多线程

2012-12-25 11:39:20

Pythoncrawler

2009-03-12 10:52:43

Java线程多线程

2009-11-13 09:02:05

OpenSUSE系统下载

2015-12-15 13:16:13

CentOSLinux 7 151升级

2023-06-05 07:56:10

线程分配处理器

2023-06-06 08:17:52

多线程编程Thread类

2013-07-16 10:12:14

iOS多线程多线程概念多线程入门

2010-08-19 10:15:57

Chrome 7

2021-12-26 18:22:30

Java线程多线程

2010-01-21 11:27:30

linux多线程机制线程同步

2009-06-29 17:49:47

Java多线程

2024-05-29 09:13:37

2021-06-11 11:28:22

多线程fork单线程

2023-06-13 13:39:00

多线程异步编程

2011-07-21 11:12:58

iPhone 线程 多线程

2020-12-28 08:03:26

多线程进程浏览器

2011-06-02 17:27:49

iphone 多线程

2023-06-07 13:49:00

多线程编程C#
点赞
收藏

51CTO技术栈公众号