android之解析包时出现错误(二)

为什么是二呢,之前遇到过一次了,详见http://blog.csdn.net/jason0539/article/details/12222173这次的原因不同,再记录下public class DownloadTask { /** * @param path下载地址 * @param filePath存储路径 * @param progressDialog进度

大家好,又见面了,我是全栈君。

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121364.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vim中翻页的命令

    vim中翻页的命令整页翻页ctrl-fctrl-bf就是forwordb就是backward翻半页ctrl-dctlr-ud=downu=up滚一行ctrl-ectrl-yzz让光标所杂的行居屏幕中央zt让光标所杂的行居屏幕最上一行t=topzb让光标所杂的行居屏幕最下一行b=bottom转载于:https://www.cnblogs.com/orez88/articles/1867879….

    2022年6月2日
    51
  • Makefile常用模板「建议收藏」

    Makefile常用模板「建议收藏」做开发的特别是C/C++开发者一般都会用到Makefile,然而多数时候在公司做项目都不需要自己去写Makefile,仅仅停留在能看懂的基础上。因为make命令编译实在是太方便了,所以自己写写小项目用一用还是挺好的。网上关于Makefile教程也很多,总结一下近几年用到的常用脚本,方便自己查阅,如果能帮到别人那便是极好的^_^。单文件项目其实一个文件的项目也没必要写Makefil…

    2022年5月31日
    30
  • Servlet 与 CGI 的比较「建议收藏」

    Servlet 与 CGI 的比较「建议收藏」首先什么是GCI,以下是百度给的定义。GCI:CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、…

    2022年6月13日
    37
  • 表单代码「建议收藏」

    表单代码「建议收藏」django表单:在App中新建的form.py表单文件:视图文件:例1模板:例2模板:例2models.py:url映射:ModelForm在表单中使用 ModelFor

    2022年6月30日
    26
  • Laravel5.3使用学习笔记—中间件

    Laravel5.3使用学习笔记—中间件

    2021年10月22日
    50
  • 微信开放平台扫码登陆

    微信开放平台扫码登陆微信授权扫码登陆微信开放平台提供了两种登陆方式,一种是会跳转到一个很丑很丑,只有一个二维码的界面里;另一种则是可以自己定制化的(二维码内嵌到自己网站内的方式)第一种方式的完成非常简单,但是第二种方式,就需要前后台都做一些调整了微信扫码登陆的准备工作这是在开始做相关业务开发之前的一些东西去微信开放平台中注册一个账号,并完成自己的开发者资质认证(这个链接应该点不过去,他们token是明…

    2022年6月5日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号