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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 迁移数据库数据到SQL Server 2017

    迁移数据库数据到SQL Server 2017

    2021年11月26日
  • goland 2021激活码【注册码】

    goland 2021激活码【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • jsoncpp官方教程_jsoncpp用法

    jsoncpp官方教程_jsoncpp用法本文主要介绍使用JsonCpp库,通过C++编程语言实现JSON文件读写操作的具体方法。1写入JSON文件这里编写一个示例程序,该程序将JSON字符串写入到JSON文件中。示例代码(json_file_oper_write.cpp)的内容如下:#include<jsoncpp/json/json.h>#include<fstream>usingnamespacestd;intmain(){Json::Value

    2022年10月10日
  • 使用python+django+twistd 开发自己的操作和维护系统的一个

    使用python+django+twistd 开发自己的操作和维护系统的一个

  • 最近程序员频繁被抓,如何避免面向监狱编程!?「建议收藏」

    最近程序员频繁被抓,如何避免面向监狱编程!?「建议收藏」最近,有关程序员因为参与某些项目开发导致被起诉,甚至被判刑的事件发生的比较多:某程序员因为接了个外包,帮别人写了个软件,结果这个软件被用于赌博导致被抓。某公司利用爬虫抓取用户信息,最后被发现,导致该公司的程序员被抓。某P2P公司暴雷,老板跑路,程序员被抓。中科大博士卖“外挂”非法牟利300多万,被警方逮捕。那么,作为一个程序员,如何避免这些坑呢?怎样尽可能的保护自己呢?本文就从爬虫、赌…

  • mysql锁表和解锁语句_db2查看是否锁表

    mysql锁表和解锁语句_db2查看是否锁表介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。锁机制共享锁与排他锁共享锁(读锁):其他事务可以读,但不能写。排他锁(写锁):其他事务不能读取,也不能写。粒度锁MySQL不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的

发表回复

您的电子邮箱地址不会被公开。

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