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

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

[复制链接]
发表于 2015-3-30 16:38 | 显示全部楼层 |阅读模式
实现自动更新,手机无SD卡也可以,本人亲测。
device-2015-03-28-100623[1].png . r/ H3 Y" q9 {$ D+ K0 T7 R5 }
QQ截图20150328100812[1].png ; l3 w' g; W9 i- a6 L6 z
& Q# a4 ~' ^8 t7 z! E. U5 h
源码片段:
2 }, ^# w* u$ g
  1.    int down_step = down_step_custom;// 提示step2 u) X# D: w2 _" o% d+ w. T  \; R6 ]
  2.         int totalSize;// 文件总大小3 R% p) l# {1 y4 ]' v
  3.         int downloadCount = 0;// 已经下载好的大小% G- _8 G+ D2 s; N
  4.         int updateCount = 0;// 已经上传的文件大小! _: [7 s: D) \# N& I% _0 ]
  5.          
    ! w: u% s. O6 F2 a; ]' x( p4 Y' s
  6.         InputStream inputStream;
    8 \  f0 D# r3 W
  7.         OutputStream outputStream;
    ) O% L; I6 p- s! N% w  O
  8. 4 B: ?( J" _+ j' M  t
  9.         URL url = new URL(down_url);
    ; k$ s1 d) h5 t6 [- z2 G  l
  10.         HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();) E1 \" \5 k$ ^; {
  11.         httpURLConnection.setConnectTimeout(TIMEOUT);
    ' M6 P" ]9 v8 q0 m# W
  12.         httpURLConnection.setReadTimeout(TIMEOUT);
    3 n( H: L6 s4 Y2 K
  13.         // 获取下载文件的size( ?! \0 A( i$ L& x+ B7 |
  14.         totalSize = httpURLConnection.getContentLength();
    / F+ ~. f2 q- F) t* D* A
  15.          ) m, b2 j* O; R# U5 @$ s
  16.         if (httpURLConnection.getResponseCode() == 404) {
    / C4 l) V  s+ p7 Q/ |9 g
  17.             throw new Exception("fail!");# H, b/ j  [( x) G( B* `+ Q
  18.             //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
    # W" _* c' g. L$ q
  19.             //所以不用处理                        ! u# Y+ a7 w5 I
  20.         }- _  ?( l% }: X0 o1 V  K
  21.          
    9 P7 d0 [- L  i' \) ~
  22.         inputStream = httpURLConnection.getInputStream();
    8 G* q& R+ v0 T  S" ]
  23.         outputStream = new FileOutputStream(file, false);// 文件存在则覆盖掉8 ~; k& V- ^6 x0 h
  24.          9 y$ P" T) B5 g5 p+ h# Q0 i5 w: C
  25.         byte buffer[] = new byte[1024];  `9 ^& o3 h$ w; A: O
  26.         int readsize = 0;% ^- F. K  w1 F( @4 l
  27.          
    0 `- n% T! m' _% K" {
  28.         while ((readsize = inputStream.read(buffer)) != -1) {
    . m1 C3 ?" `1 @: r( _; D
  29.             
    5 C) K6 D6 u6 E% ~$ f3 D; c
  30. //          /*********如果下载过程中出现错误,就弹出错误提示,并且把notificationManager取消*********/
      R: k+ d  E4 x$ l4 @8 A$ @
  31. //          if (httpURLConnection.getResponseCode() == 404) {6 M; `% _5 P  R# S1 O, g
  32. //              notificationManager.cancel(R.layout.notification_item);
    - m: K$ \+ E' `/ b/ a2 c9 v8 R" o
  33. //              throw new Exception("fail!");
    ' t1 D( B3 `0 E1 [2 |! j
  34. //              //这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
    ) L6 W* Y$ w; M& d$ p2 F( `: u
  35. //              //所以不用处理                        7 K* y! |6 M& G+ Q( T
  36. //          }
    - y; a' Y6 R7 y8 f
  37.                          0 P/ ~8 n3 Z# d1 S2 R' C! D
  38.             outputStream.write(buffer, 0, readsize);
    : Z3 H# y$ E% Z& j2 x1 e
  39.             downloadCount += readsize;// 时时获取下载到的大小8 X2 l" P7 [, s1 Z2 V, |
  40.             /*** 每次增张3%**/* Q' ~$ b3 ^9 H% e8 _7 \. P/ O
  41.             if (updateCount == 0 || (downloadCount * 100 / totalSize - down_step) >= updateCount) {
    . B. T; R/ b2 Z. q  E
  42.                 updateCount += down_step;# Z% Q9 N; z+ J( J, i3 Y
  43.                 // 改变通知栏0 h, P' a7 H( n1 {0 e# I
  44.                 contentView.setTextViewText(R.id.notificationPercent,updateCount + "%");/ H4 ~  D+ Q/ m# q# L# M7 ^" A( c0 Y
  45.                 contentView.setProgressBar(R.id.notificationProgress, 100,updateCount, false);         
    % u; E, h5 ^% \
  46.                 notification.contentView = contentView;" Q3 ?3 j* z* _* L3 w
  47.                 notificationManager.notify(R.layout.notification_item, notification);           
    2 L" B5 U1 m% S" B+ E
  48.             }
    . t2 U2 o6 J, j% b1 x4 |4 b
  49.         }
    ! H$ x: r! E" g5 G/ _% m' y. l7 u# e
  50.         if (httpURLConnection != null) {
    8 c6 H5 ]- V  C: X& |6 y
  51.             httpURLConnection.disconnect();
    . h2 o/ H& z8 E5 p! A
  52.         }
    * w: R5 ~9 Q3 z% c7 {! Y
  53.         inputStream.close();* H& @# _: i, O; h
  54.         outputStream.close();
    2 M+ k  R% t0 w4 Y5 ~1 Z
  55.          8 k: A. c, S% j0 `
  56.         return downloadCount;
    # J& V  z; k0 w- o
  57.    
复制代码

% ?$ [  j  H. f. P* P" m; U( Y8 @3 D4 k
源码下载:+ ~- J) j; s' N# P7 M
游客,如果您要查看本帖隐藏内容请回复
3 d) X5 O% d- R7 q" s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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