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(转载请说明出处)


 

android错误之解析包时出现错误(二),,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。