请选择 进入手机版 | 继续访问电脑版
查看: 5614|回复: 0

[Android开发资源分享] Android源码应用:自动更新

[复制链接]
发表于 2015-3-30 16:38 | 显示全部楼层 |阅读模式
实现自动更新,手机无SD卡也可以,本人亲测。
device-2015-03-28-100623[1].png " x' I* T8 r3 t( T) Y
QQ截图20150328100812[1].png ' _( C/ I; M+ y' d" ], r

7 G! E* F$ q% Q0 G7 j% T3 b( _1 Q' g源码片段:' s8 n, Q  C5 N" J
  1.    int down_step = down_step_custom;// 提示step
    2 k& j  i2 z7 Y: ~6 e- U
  2.         int totalSize;// 文件总大小, f2 B4 _& C, K% k/ ^! F; Q! E
  3.         int downloadCount = 0;// 已经下载好的大小
      [3 |, p% w  g' d
  4.         int updateCount = 0;// 已经上传的文件大小
    / q1 L3 i: i* C, b/ ~  B
  5.          
    8 t, b' O6 }: ^4 j) e) {
  6.         InputStream inputStream;
    / Z  k# R/ u1 h1 h6 Y7 ?" x, _
  7.         OutputStream outputStream;; l- m: ]8 g0 L" j

  8. % o: Q9 [- y7 M9 t
  9.         URL url = new URL(down_url);9 N) _# @, D/ ~6 t
  10.         HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();" H5 [* X8 a. F. b3 T! l3 w' x- \$ J
  11.         httpURLConnection.setConnectTimeout(TIMEOUT);( c- J( v! o# |/ [
  12.         httpURLConnection.setReadTimeout(TIMEOUT);, m! S9 h$ @' N
  13.         // 获取下载文件的size
    3 J/ ?8 \8 T/ P
  14.         totalSize = httpURLConnection.getContentLength();
    2 _4 [  t4 D  G4 v0 @( n( ^
  15.          
    - |  e4 S; q+ v; |  D9 e$ c
  16.         if (httpURLConnection.getResponseCode() == 404) {
    & m6 t5 A7 c9 B, o( I! S% Y
  17.             throw new Exception("fail!");& H: z- z2 w, p5 r0 V7 m2 ^5 s* T
  18.             //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
    , S$ v4 L2 h2 _
  19.             //所以不用处理                        
    * s- G# z. m' B# T4 H- J5 M
  20.         }: X8 b, P2 p4 p, i
  21.          
    6 C  Q# ?. a% `8 Y8 p- _
  22.         inputStream = httpURLConnection.getInputStream();* D) G- n/ [* A+ a) a& O9 @
  23.         outputStream = new FileOutputStream(file, false);// 文件存在则覆盖掉
    ' G$ A6 j' |9 H" B
  24.          
    0 K, {- E" n1 ]$ q% `' B# b- ~
  25.         byte buffer[] = new byte[1024];
    8 F' r5 g5 ?+ h3 V) _/ A2 n$ g# a
  26.         int readsize = 0;" b8 M7 ]# r" Q. s' Z
  27.          $ O  H4 f  ^& d8 T0 p
  28.         while ((readsize = inputStream.read(buffer)) != -1) {
    ' g% f) o- k  Y
  29.              7 g3 u6 d% u& h1 e7 n( w
  30. //          /*********如果下载过程中出现错误,就弹出错误提示,并且把notificationManager取消*********// w7 \( J( E$ D3 R
  31. //          if (httpURLConnection.getResponseCode() == 404) {0 C, ~7 J3 p: o7 F$ t7 \
  32. //              notificationManager.cancel(R.layout.notification_item);8 {, p/ M9 b3 X0 E3 [
  33. //              throw new Exception("fail!");
    " U  n, B' ?1 K
  34. //              //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,7 x+ j/ J+ x  Q- `/ I, y& i
  35. //              //所以不用处理                        $ @, Y6 l' d8 w) h. w
  36. //          }  V" Y8 a  ?9 A( N- Z& }* Y
  37.                         
    8 Z. [8 j( a3 l0 W
  38.             outputStream.write(buffer, 0, readsize);4 l' G' O- \/ c) G2 t8 I
  39.             downloadCount += readsize;// 时时获取下载到的大小& C! G# u! G% X0 g8 D
  40.             /*** 每次增张3%**/
    ) I2 k. q  ?. V  |
  41.             if (updateCount == 0 || (downloadCount * 100 / totalSize - down_step) >= updateCount) {; r+ u: C$ I. ~
  42.                 updateCount += down_step;
    7 e1 c% Y* u* [; U; p- q$ A0 R+ x
  43.                 // 改变通知栏
    ! j5 x* a; k) N1 n( N" A' `; g) h
  44.                 contentView.setTextViewText(R.id.notificationPercent,updateCount + "%");0 h; t" o6 M- Z% }8 q" k( ~
  45.                 contentView.setProgressBar(R.id.notificationProgress, 100,updateCount, false);         
    7 U1 p  O1 o/ Q! m2 L" b
  46.                 notification.contentView = contentView;
    9 M! n9 F2 h+ _7 a% I
  47.                 notificationManager.notify(R.layout.notification_item, notification);           
    6 G* B) U3 ]8 v) Y5 g
  48.             }+ C& ]' R# u- a2 ~' n  ~
  49.         }
    ( E# q6 b. ]: R0 i5 n! Y3 c
  50.         if (httpURLConnection != null) {
    " b' \2 l/ G$ @
  51.             httpURLConnection.disconnect();
    4 i& ]4 e# Z# z7 ]1 Z! {2 w3 i/ Z
  52.         }
    9 Z0 v2 R# n: ^( y( c4 u
  53.         inputStream.close();
    & G5 P% N3 [5 L+ O/ U
  54.         outputStream.close();
    0 p" g9 q+ Y7 i+ ^2 S* W3 Q
  55.          
    * }* O6 n7 X! F% s3 Z' E
  56.         return downloadCount;
    ! S! ~, S4 h, Q  Y3 H7 I; ^8 X
  57.    
复制代码
$ ^* g# q) v! ^, J4 O- w9 y) L
+ E1 I4 \) k- y
源码下载:
9 m. ~. |: @- g6 T4 G* a0 }( M( K- l
游客,如果您要查看本帖隐藏内容请回复
- f' N$ c6 u) P$ {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

快速回复 返回顶部 返回列表