为什么是二呢,之前遇到过一次了,详见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(转载请说明出处)