Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android錯誤之解析包時出現錯誤(二)

android錯誤之解析包時出現錯誤(二)

編輯:關於Android編程

為什麼是二呢,之前遇到過一次了,詳見http://blog.csdn.net/jason0539/article/details/12222173

這次的原因不同,再記錄下

public class DownloadTask {
	
	/**
	 * @param path下載地址
	 * @param filePath存儲路徑
	 * @param progressDialog進度條
	 * @return
	 * @throws Exception
	 */
	public static File getFile(String path,String filePath,ProgressDialog progressDialog) throws Exception{
		
		URL url = new URL(path);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setConnectTimeout(2000);
		connection.setRequestMethod("GET");
		if(connection.getResponseCode() == 200){
			int total = connection.getContentLength();
			progressDialog.setMax(total);
			
			InputStream is = connection.getInputStream();//獲得socket輸入流
			File file = new File(filePath);
			FileOutputStream fos = new FileOutputStream(file);//file輸出流
			byte[] buffer = new byte[1024];
			int len;
			int progress = 0;
			while((len = is.read(buffer)) != -1){
				fos.write(buffer);
				progress += len;
				progressDialog.setProgress(progress);
			}
			fos.flush();
			is.close();
			fos.close();
			connection.disconnect();
			return file;
		}
		return null;
	}


這是一個執行下載任務的類,用來從服務器下載更新用的apk,結果下載成功後,跳轉到安裝頁面,卻提示解析包時出現錯誤,這樣的錯誤真是讓人頭疼,跟代碼無關,沒有頭緒。

後來發現有類似情況http://bbs.csdn.net/topics/380117090?page=1#post-397007671

但是沒有解決方案,對比發現下載來的apk和服務器文件夾裡的apk大小有些差別,我就嘗試把每次讀取的byte[]做小一點,也就是

byte[] buffer = new byte[1024];

這行代碼,把1024改成了128,又改成了64,結果就沒問題了。

意外的收貨。你也遇到類似問題的話嘗試一下,good luck。

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(轉載請說明出處)


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved