Android应用自动更新

移动开发
实现自动更新,手机无SD卡也可以,本人亲测。


源码简介

实现自动更新,手机无SD卡也可以,本人亲测。
源码截图

 

源码片段

  1. int down_step = down_step_custom;// 提示step 
  2.         int totalSize;// 文件总大小 
  3.         int downloadCount = 0;// 已经下载好的大小 
  4.         int updateCount = 0;// 已经上传的文件大小 
  5.           
  6.         InputStream inputStream; 
  7.         OutputStream outputStream; 
  8.   
  9.         URL url = new URL(down_url); 
  10.         HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
  11.         httpURLConnection.setConnectTimeout(TIMEOUT); 
  12.         httpURLConnection.setReadTimeout(TIMEOUT); 
  13.         // 获取下载文件的size 
  14.         totalSize = httpURLConnection.getContentLength(); 
  15.           
  16.         if (httpURLConnection.getResponseCode() == 404) { 
  17.             throw new Exception("fail!"); 
  18.             //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception, 
  19.             //所以不用处理                        
  20.         } 
  21.           
  22.         inputStream = httpURLConnection.getInputStream(); 
  23.         outputStream = new FileOutputStream(file, false);// 文件存在则覆盖掉 
  24.           
  25.         byte buffer[] = new byte[1024]; 
  26.         int readsize = 0
  27.           
  28.         while ((readsize = inputStream.read(buffer)) != -1) { 
  29.               
  30. //          /*********如果下载过程中出现错误,就弹出错误提示,并且把notificationManager取消*********/ 
  31. //          if (httpURLConnection.getResponseCode() == 404) { 
  32. //              notificationManager.cancel(R.layout.notification_item); 
  33. //              throw new Exception("fail!"); 
  34. //              //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception, 
  35. //              //所以不用处理                        
  36. //          } 
  37.                           
  38.             outputStream.write(buffer, 0, readsize); 
  39.             downloadCount += readsize;// 时时获取下载到的大小 
  40.             /*** 每次增张3%**/ 
  41.             if (updateCount == 0 || (downloadCount * 100 / totalSize - down_step) >= updateCount) { 
  42.                 updateCount += down_step; 
  43.                 // 改变通知栏 
  44.                 contentView.setTextViewText(R.id.notificationPercent,updateCount + "%"); 
  45.                 contentView.setProgressBar(R.id.notificationProgress, 100,updateCount, false);          
  46.                 notification.contentView = contentView; 
  47.                 notificationManager.notify(R.layout.notification_item, notification);           
  48.             } 
  49.         } 
  50.         if (httpURLConnection != null) { 
  51.             httpURLConnection.disconnect(); 
  52.         } 
  53.         inputStream.close(); 
  54.         outputStream.close(); 
  55.           
  56.         return downloadCount; 
  57.      

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

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

2011-08-02 18:30:32

iOS 应用程序 属性

2021-11-08 22:24:04

Windows 10Windows微软

2017-10-20 12:13:11

数据库PostgreSQL时间戳

2010-01-08 13:20:52

ibmdwWeb

2023-03-22 13:04:37

微软Windows 11

2010-12-13 13:33:47

Windows 7驱动

2012-04-16 14:55:29

MacChrome

2015-09-15 15:25:36

更新配置Windows 10

2010-06-02 19:54:48

SVN自动更新

2015-07-27 14:48:16

Windows 10更新

2016-10-21 10:40:06

Windows 10Updata禁用

2017-01-12 21:02:29

Windows 10系统更新

2021-07-26 16:23:13

Windows 10Windows微软

2021-11-25 22:34:05

Windows微软应用商店

2015-07-28 10:26:03

Windows 10自动更新

2015-09-10 14:42:37

自动更新UpdateWindows 10

2015-07-21 10:20:00

Windows 10更新微软

2019-07-15 16:11:50

微软WindowsWindows 10

2018-03-19 11:50:00

LinuxCentOS yum命令行

2010-05-24 11:27:20

SVN配置自动更新WE
点赞
收藏

51CTO技术栈公众号