当前位置: 代码迷 >> Android >> android异常之解析包时出现异常(二)
  详细解决方案

android异常之解析包时出现异常(二)

热度:95   发布时间:2016-04-28 06:29:54.0
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(转载请说明出处)


 

  相关解决方案