手机访问action下载apk文件 安装是出错:解析包时出现错误

ForgetOnly 2012-11-20 05:27:45
手机访问action下载apk文件 安装是出错:解析包时出现错误。
电脑上用浏览器直接下载安装在手机上是好的,但用手机访问action下载下来的文件与原文件大小不一致,且安装时出现错误提示:解析包时出现错误。
action代码如下:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
URL downUrl = new URL("/APPDown/android/HGT.apk");
URLConnection conn = downUrl.openConnection();
InputStream is = conn.getInputStream();
BufferedInputStream in = new BufferedInputStream(is);
response.addHeader("Content-Disposition", "attachment;filename=" + "HGT.apk");
//response.setContentType("application/vnd.android.package-archive");
response.addHeader("Content-Type", "application/vnd.android.package-archive");
OutputStream outputStream = response.getOutputStream();
byte[] data = new byte[1024];
int size = 0;
int l = 0;
while ((l = in.read(data)) > 0) {
size += l;
outputStream.write(data, 0, l);
}
response.addHeader("Content-Length", size + "");
outputStream.flush();
outputStream.close();
in.close();
is.close();
return null;
}
文件可以正常下载到手机。但安装失败。
...全文
6519 点赞 收藏 38
写回复
38 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_0612 2013-11-20
楼主问题解决了没,我也遇到同样的情况,下载好了安装就报解析错误,求解
回复
张正 2013-10-30
继续顶 我也遇到这个问题···求解啊!
回复
yl7319 2013-10-04
我的华为C8500也是这种情况,下载下来没问题,但是安装的时候就出现:解析包时出现问题。求解!谢谢!
回复
涂涂涂小姐 2013-09-05
我也遇到了同样的问题,用电脑下载下来就可以正常安装,但是手机下载下来的apk文件只有1K,安装时解析错误。
回复
siyubaobao1404 2013-08-28
HttpServletResponse response = ServletActionContext.getResponse(); // 下载本地文件 // 读到流中 File file = new File(filePath); InputStream inStream = new FileInputStream(file);// 文件的存放路径 // 设置输出的格式 response.reset(); response.setContentType("application/vnd.android.package-archive"); response.addHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\""); // 循环取出流中的数据 byte[] b = new byte[100]; int len; try { OutputStream ops = response.getOutputStream(); while ((len = inStream.read(b)) > 0) { ops.write(b, 0, len); } if(null != ops) { ops.flush(); ops.close(); } if(null != inStream) { inStream.close(); } return null; } catch (IOException e) { //e.printStackTrace(); }
回复
xmoon1983 2013-07-23
解析错误-解析包时出现问题-解决方法。 http://blog.chinaunix.net/uid-22985736-id-2977687.html 主要是用openFileOutput("test.apk", MODE_PRIVATE)创建输出流造成的。 将文件创建模式MODE_PRIVATE改成MODE_WORLD_READABLE就可以了。 参考:http://stackoverflow.com/questions/5503487/android-failed-to-open-zip-archive
回复
qimiliang 2013-07-09
我艹,我也是为了这个问题,加班到现在了。。。期待高手啊
回复
码农伯伯 2013-05-02
while((len=in.read(buffer))!=-1) { out.write(buffer, 0, buffer.length); total+=len; pg.setProgress(total); Thread.sleep(20);-------------下载的时候可以让睡眠一会! } out.flush(); in.close();-----注意流的关闭顺序 out.close(); return file;
回复
ForgetOnly 2013-04-01
引用 28 楼 wwh00701 的回复:
使劲顶上去,在这终于有知音了!我华为G510T8951手机入手二个月了,就是这样情形,无论用手机是如何下的APK文件都不能安装,电脑下在手机中的可正常安装,求解?
因为有其他事在忙 所以这个暂时搁置,但问题依然存在楼上所说的方法没有一种是可行的,故而无法结贴。
回复
wwh00701 2013-03-21
手机刷机了3月1日的包,情形依然一样,手机下的APK都不能安装,除了解析包时出现问题,还有软件未安装等提示情形
回复
wwh00701 2013-03-21
使劲顶上去,在这终于有知音了!我华为G510T8951手机入手二个月了,就是这样情形,无论用手机是如何下的APK文件都不能安装,电脑下在手机中的可正常安装,求解?
回复
wwh00701 2013-03-21
使劲顶上去,在这终于有知音了!我华为G510T8951手机入手二个月了,就是这样情形,无论用手机是如何下的APK文件都不能安装,电脑下在手机中的可正常安装,求解?
回复
ForgetOnly 2012-12-06
引用 23 楼 Giberson1 的回复:
关键注意这一段: Java code?123 response.addHeader("Content-Disposition", "attachment;filename=" + "HGT.apk"); //response.setContentType("application/vnd.android.package-archive"); ……
下载是可以的,只是下下来的文件在点击安装的时候出现了错误。错误信息就跟上面描述的一模一样。
回复
ForgetOnly 2012-12-06
引用 23 楼 Giberson1 的回复:
关键注意这一段: Java code?123 response.addHeader("Content-Disposition", "attachment;filename=" + "HGT.apk"); //response.setContentType("application/vnd.android.package-archive"); ……
也是一样的结果。
回复
ForgetOnly 2012-12-06
期待早日结贴
回复
科學信仰 2012-12-03
引用 21 楼 ForgetOnly 的回复:
引用 20 楼 dracularking 的回复: 引用 19 楼 ForgetOnly 的回复:不是的,安装程序不是自己写的,这个功能我在美团网发现有,就是当用户随便拿个手机扫描一个二维码然后就会返回一个相应的手机安装文件,点击下载完成后手机会自动提示用户安装。 我不明白既然是一模一样的安装文件,又是通过手机自带的安装程序安装,怎么会安装失败了呢? 这就是问题所在之处,费解中……
肯定有哪个环节是不一样的,或者自认为的已知条件其中有些是错误的,还要好好检查。
回复
Giberson1 2012-12-03
关键注意这一段:

 response.addHeader("Content-Disposition", "attachment;filename=" + "HGT.apk");
        //response.setContentType("application/vnd.android.package-archive");
        response.addHeader("Content-Type", "application/vnd.android.package-archive");
可能是手机环境部支持这种类型,导致的下载异常。
回复
ForgetOnly 2012-11-30
引用 20 楼 dracularking 的回复:
引用 19 楼 ForgetOnly 的回复:不是的,安装程序不是自己写的,这个功能我在美团网发现有,就是当用户随便拿个手机扫描一个二维码然后就会返回一个相应的手机安装文件,点击下载完成后手机会自动提示用户安装。 我不明白既然是一模一样的安装文件,又是通过手机自带的安装程序安装,怎么会安装失败了呢?
这就是问题所在之处,费解中……
回复
科學信仰 2012-11-28
引用 19 楼 ForgetOnly 的回复:
不是的,安装程序不是自己写的,这个功能我在美团网发现有,就是当用户随便拿个手机扫描一个二维码然后就会返回一个相应的手机安装文件,点击下载完成后手机会自动提示用户安装。
我不明白既然是一模一样的安装文件,又是通过手机自带的安装程序安装,怎么会安装失败了呢?
回复
ForgetOnly 2012-11-28
引用 18 楼 dracularking 的回复:
引用 17 楼 ForgetOnly 的回复:引用 16 楼 dracularking 的回复: 引用 15 楼 ForgetOnly 的回复:昨天修改了下方法,现在手机下载的文件大小与原文件大小一致(1.06mb),但在安装时仍出现错误提示:解析包时出现问题 是精确到字节也一致吗?(也就是完全一致,那问题就好办多了) 安装出现什么错误提示呢 是一致的……
不是的,安装程序不是自己写的,这个功能我在美团网发现有,就是当用户随便拿个手机扫描一个二维码然后就会返回一个相应的手机安装文件,点击下载完成后手机会自动提示用户安装。
回复
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2012-11-20 05:27
社区公告
暂无公告