Android應(yīng)用自動更新
作者:佚名
實現(xiàn)自動更新,手機無SD卡也可以,本人親測。
源碼簡介
實現(xiàn)自動更新,手機無SD卡也可以,本人親測。
源碼截圖
源碼片段
- int down_step = down_step_custom;// 提示step
- int totalSize;// 文件總大小
- int downloadCount = 0;// 已經(jīng)下載好的大小
- int updateCount = 0;// 已經(jīng)上傳的文件大小
- InputStream inputStream;
- OutputStream outputStream;
- URL url = new URL(down_url);
- HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
- httpURLConnection.setConnectTimeout(TIMEOUT);
- httpURLConnection.setReadTimeout(TIMEOUT);
- // 獲取下載文件的size
- totalSize = httpURLConnection.getContentLength();
- if (httpURLConnection.getResponseCode() == 404) {
- throw new Exception("fail!");
- //這個地方應(yīng)該加一個下載失敗的處理,但是,因為我們在外面加了一個try---catch,已經(jīng)處理了Exception,
- //所以不用處理
- }
- inputStream = httpURLConnection.getInputStream();
- outputStream = new FileOutputStream(file, false);// 文件存在則覆蓋掉
- byte buffer[] = new byte[1024];
- int readsize = 0;
- while ((readsize = inputStream.read(buffer)) != -1) {
- // /*********如果下載過程中出現(xiàn)錯誤,就彈出錯誤提示,并且把notificationManager取消*********/
- // if (httpURLConnection.getResponseCode() == 404) {
- // notificationManager.cancel(R.layout.notification_item);
- // throw new Exception("fail!");
- // //這個地方應(yīng)該加一個下載失敗的處理,但是,因為我們在外面加了一個try---catch,已經(jīng)處理了Exception,
- // //所以不用處理
- // }
- outputStream.write(buffer, 0, readsize);
- downloadCount += readsize;// 時時獲取下載到的大小
- /*** 每次增張3%**/
- if (updateCount == 0 || (downloadCount * 100 / totalSize - down_step) >= updateCount) {
- updateCount += down_step;
- // 改變通知欄
- contentView.setTextViewText(R.id.notificationPercent,updateCount + "%");
- contentView.setProgressBar(R.id.notificationProgress, 100,updateCount, false);
- notification.contentView = contentView;
- notificationManager.notify(R.layout.notification_item, notification);
- }
- }
- if (httpURLConnection != null) {
- httpURLConnection.disconnect();
- }
- inputStream.close();
- outputStream.close();
- return downloadCount;
源碼鏈接:http://down.51cto.com/data/2012784
責(zé)任編輯:chenqingxiang
來源:
網(wǎng)絡(luò)整理