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

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

[复制链接]
发表于 2015-3-30 16:38 | 显示全部楼层 |阅读模式
实现自动更新,手机无SD卡也可以,本人亲测。
device-2015-03-28-100623[1].png % y1 _$ D; _* m$ W
QQ截图20150328100812[1].png 3 y2 s0 J2 b- [  L2 p1 s' o. O$ [, V

7 X' s" }. N) h( j) L  u% A源码片段:
+ V$ T* w1 [. F3 W7 K- s  ^7 y, Y
  1.    int down_step = down_step_custom;// 提示step; o# E7 Y' J! v2 C: b' x% M
  2.         int totalSize;// 文件总大小
    ) b0 r$ _4 I; N5 k
  3.         int downloadCount = 0;// 已经下载好的大小
    1 M4 S4 q/ e# {7 z# u7 i, J5 f
  4.         int updateCount = 0;// 已经上传的文件大小4 g  n/ |$ N- I1 Q* j$ s' x1 U
  5.          
    $ C+ D% C" y/ b% N
  6.         InputStream inputStream;
    ' N3 X* ?6 J3 d# ]% ?3 v
  7.         OutputStream outputStream;
    $ V) D" c$ [9 \/ O, p

  8. ' E  ]/ X" s. S+ m; O! S
  9.         URL url = new URL(down_url);( H( x  z+ D( e4 g4 T
  10.         HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
    , a6 @4 z6 M4 T9 V
  11.         httpURLConnection.setConnectTimeout(TIMEOUT);7 @. k* J* E0 [3 D4 }
  12.         httpURLConnection.setReadTimeout(TIMEOUT);
    & C% B8 |1 c( p! M7 U+ e0 J
  13.         // 获取下载文件的size  m' S2 A1 P' E/ K# L) h7 \' h) y. R
  14.         totalSize = httpURLConnection.getContentLength();4 `+ V& b2 q6 J' n! ~* A9 v
  15.          
    - d( T. }/ T1 d
  16.         if (httpURLConnection.getResponseCode() == 404) {
    4 ~6 N" x$ e- ]' E
  17.             throw new Exception("fail!");
    8 b- g% r! D9 K- P! u+ ?: W
  18.             //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
    4 s, a# \( B2 A* ^" F+ r& g& a
  19.             //所以不用处理                        
    4 }, W/ y( ?$ }9 F! l1 }/ I
  20.         }
      e: c' ~  b  u
  21.          
    ! R5 I7 _. S4 ~0 S& M; l
  22.         inputStream = httpURLConnection.getInputStream();
    * t: p3 g# ]8 m
  23.         outputStream = new FileOutputStream(file, false);// 文件存在则覆盖掉
    : q. z4 i1 ~: A1 Y' M
  24.          6 a6 V8 G; u2 {: W: Z
  25.         byte buffer[] = new byte[1024];/ N# o: d4 U& l6 J/ h) H3 c
  26.         int readsize = 0;
    . T) }9 x9 [1 I& g' ?' Z: _
  27.          6 Y* c/ u3 Y$ U2 s
  28.         while ((readsize = inputStream.read(buffer)) != -1) {3 w  L0 F- b. S! i
  29.             
    ) ]& @1 G' H5 y9 t
  30. //          /*********如果下载过程中出现错误,就弹出错误提示,并且把notificationManager取消*********/
    ! _" n% [. o$ q) e- a' I4 M
  31. //          if (httpURLConnection.getResponseCode() == 404) {
    2 x2 s& H  X" R/ b
  32. //              notificationManager.cancel(R.layout.notification_item);
    / G) `' `; v1 X4 k
  33. //              throw new Exception("fail!");
    ; m% W( M# u" H# [& W" J0 ~! |
  34. //              //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
    % P; X( X( \0 w3 t2 Y4 `
  35. //              //所以不用处理                        
    * f( s( N- {, a6 M
  36. //          }" Q% \: R, a1 Y& H! Y
  37.                         
    / g5 T" {4 ^6 Z& e& t
  38.             outputStream.write(buffer, 0, readsize);  `' J5 E2 q3 H, n- ^) P& K7 W/ V
  39.             downloadCount += readsize;// 时时获取下载到的大小; g* K. R" @- g6 ?) l: y" f
  40.             /*** 每次增张3%**/+ B+ T: M: R; l* f/ I8 B5 P7 A4 F3 u
  41.             if (updateCount == 0 || (downloadCount * 100 / totalSize - down_step) >= updateCount) {
    3 S% b+ Z3 I0 b# @5 P4 o
  42.                 updateCount += down_step;1 Y5 U4 J6 T! ?; }
  43.                 // 改变通知栏+ S; W" M# E: S0 U  L" _9 E2 d
  44.                 contentView.setTextViewText(R.id.notificationPercent,updateCount + "%");
    . N9 g& M# ?8 Y8 o1 F( E/ L
  45.                 contentView.setProgressBar(R.id.notificationProgress, 100,updateCount, false);          5 w! \  o( m: ?2 V9 Q
  46.                 notification.contentView = contentView;
    & a. W: y. ~5 V* Q( r8 ^" O5 W
  47.                 notificationManager.notify(R.layout.notification_item, notification);           " u) p# m1 d4 P1 i6 ^/ m3 L+ t
  48.             }
    2 E& X& V& D3 z
  49.         }4 o: f: [4 I2 H" @* y
  50.         if (httpURLConnection != null) {
    % N( I5 E6 Z  H( l4 j& R) z
  51.             httpURLConnection.disconnect();: |, C9 _4 w! u' m1 y! h( D2 z- ?
  52.         }9 X, v" h: L8 W
  53.         inputStream.close();5 O% t& L8 i+ g
  54.         outputStream.close();
    # O7 `6 M5 p5 @! X8 E
  55.          " e* G' Q! P% A; b) W1 L
  56.         return downloadCount;
    ' l- b% B+ F: c6 m1 c1 n  w- _1 a
  57.    
复制代码

4 L3 q6 ]8 `& o7 c3 x$ K8 l3 p# s0 ^* W! r+ V; ^
源码下载:' X" D) Y: r0 Q* P) R4 Y, ^
游客,如果您要查看本帖隐藏内容请回复
# |% Z8 k' C, G, A/ x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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