文件下载-android下载文件打不开

问题描述

android下载文件打不开

我用mars老师的源码,

  /**
     * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在
     */
    public int downFile(String urlStr, String path, String fileName) {
        InputStream inputStream = null;
        try {
            FileUtils fileUtils = new FileUtils();

            if (fileUtils.isFileExist(path + fileName)) {
                return 1;
            } else {
                inputStream = getInputStreamFromUrl(urlStr);
                File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream);
                if (resultFile == null) {
                    return -1;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        } finally {
            try {
                inputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return 0;
    }

返回0,成功下载了,而且目录下看到有文件,但是打开显示解析程序包时出现问题,到底怎么回事

     new Thread(new Runnable() {
                @Override
                public void run() {
                    HttpDownloader httpDownloader = new HttpDownloader();
                    int result = httpDownloader.downFile("http://xxxxx.apk", "aaaaaaaa/", "xxxxx.apk");//部分省略
                    System.out.println(result);
                }
            }).start();

logcat

02-29 11:12:40.025 8803-8803/com.android.packageinstaller D/asset: failed to open Zip archive '/storage/emulated/0/aaaaaaaa/xxxxx.apk'
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageInstaller: Parse error when parsing manifest. Discontinuing installation
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: Unable to read AndroidManifest.xml of /storage/emulated/0/aaaaaaaa/xxxxx.apk
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: java.io.FileNotFoundException: AndroidManifest.xml
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.content.res.AssetManager.openXmlAssetNative(Native Method)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:488)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:456)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.content.pm.PackageParser.parsePackage(PackageParser.java:528)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at com.android.packageinstaller.PackageUtil.getPackageInfo(PackageUtil.java:73)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at com.android.packageinstaller.PackageInstallerActivity.onCreate(PackageInstallerActivity.java:465)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.Activity.performCreate(Activity.java:5231)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.os.Handler.dispatchMessage(Handler.java:102)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.os.Looper.loop(Looper.java:136)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at android.app.ActivityThread.main(ActivityThread.java:5001)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at java.lang.reflect.Method.invokeNative(Native Method)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at java.lang.reflect.Method.invoke(Method.java:515)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: at dalvik.system.NativeStart.main(Native Method)

解决方案

主要是权限问题,解决方法看一下这篇内容http://blog.csdn.net/y150481863/article/details/7867493

解决方案二:

首先不要急于怀疑代码,log里有一行
    02-29 11:12:40.061 8803-8803/com.android.packageinstaller W/PackageParser: java.io.FileNotFoundException: AndroidManifest.xml

根据log的上下文,应该是系统调起安装时解析apk出错。
你可以把down下来的apk解压,看一下里面有没有AndroidManifest.xml文件。如果没有,表明下载的apk本身就有问题。
也可以尝试下载其他确保没问题的应用试一下,如果还不行再讨论。

解决方案三:

解决了,敲了一遍慕课网的视频代码= =

时间: 2024-09-18 18:09:31

文件下载-android下载文件打不开的相关文章

php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)_php实例

在做PHP程序时,需要使用PHP做的文件下载 那做就做呗把代码复制过来改了一改. 很多效果也出来了 那么点击下载后,恩,本以为搞定了文件下载,谁知道,图片打开的时候提示文件损坏,这我就观察了文件的大小.似乎真是多了 1KB左右. 使用PS打开,恩,提示了损坏,不过图象可以出来. 那么我就认为是 那多出来的 1kb的问题了. 然后,我把一个txt上传上去,然后下载. 果然发现,文件的前面以及后面,都多了几个 字符. 那我就在想应该怎么去掉啊.各种百度,谷歌,上论坛提问. 最后,经过我一个多小时的搜

彻底解决中文名文件下载和下载文件内容乱码问题

解决|问题|下载|中文 之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~今天,通过改写原Download.jsp文件已经彻底解决了这个问题~现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!  作者:古埃及法老---------------------------------------------------------------------------

代码-ashx如何实现从sql中读取二进制流进行文件下载,同时能选择保存下载文件的路径?

问题描述 ashx如何实现从sql中读取二进制流进行文件下载,同时能选择保存下载文件的路径? 5C 问题如题,之前将文件以二进制流存入SQL中,现在需要实现下载代码,要求可选择文件下载路径. 解决方案 保存路径是客户端的,只能由客户自行选择保存位置,服务器端无法指定,就算能指定,你知道客户端一定就存在这个路径?就算你指定系统盘,你就一定知道客户端系统盘就是c盘?我多系统当前系统盘是f盘什么的呢.. 解决方案二: 文件下载 FileInputStream不能读取中文路径的问题Android下载文件

JavaWeb利用struts实现文件下载时改变文件名称_java

先看看效果图: package com.fenghuo.struts.download; import java.net.URLEncoder; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.

app-android 生成文件打不开

问题描述 android 生成文件打不开 files under the build folder are generated and should not be edited. Error:(1) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'. Error:(1) Err

php用header()实现文件下载,下载的文件提示被破坏不能打开的解决办法

本站以前分享过一个文件下载的函数,具体文章连接地址如下: PHP文件下载函数(代码) 最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数,经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾.综合以上做了些改正,以下代

Android进阶:实现多线程下载文件

 多线程下载大概思路就是通过Range 属性实现文件分段,然后用RandomAccessFile 来读写文件,最终合并为一个文件   首先看下效果图     创建工程 ThreadDemo   首先布局文件 threaddemo.xml   view plaincopy to clipboardprint? <?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android=&q

Android通过SOCKET下载文件的方法_Android

本文实例讲述了Android通过SOCKET下载文件的方法.分享给大家供大家参考,具体如下: 服务端代码 import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.

【Android开发】网路编程及Internet应用-从指定网站上下载文件

利用前面学过的HttpUrlConnection和文件输入输出流来完成从Android端下载指定站点的文件. 写一个编辑框,用来输入要下载文件的URL路径,下面一个按钮,点击实现文件下载 res/layout/main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and