将文件从webview下载到自定义文件夹

时间:2011-02-01 08:44:28

标签: android download

是否可以从android webview将文件下载到用户定义的目录。 目前,该文件正在SDCard / downloads中下载。是否可以覆盖默认下载位置?

我目前正在使用以下代码下载文件

Intent intent = new Intent(Intent.ACTION_VIEW Uri.parse("download file location"));
startActivity(intent); 

1 个答案:

答案 0 :(得分:1)

当您的意思是需要浏览器时......您是否需要使用浏览器处理下载?因为您可以使用webview并仍然自己处理下载。

正如@Harry Joy所评论的那样,我会使用shouldOverrideUrlLoading(WebView view, String url)方法并过滤您想要单独下载的网址/扩展程序。如果你没有任何特定的文件扩展名或网址,你可能想要下载,但你可以编辑你的html / javascript代码,也许你可以做一些javascript技巧来添加一个标志,让你的WebView将URL识别为下载。 / p>

要处理下载,也许你已经知道了,但它会是这样的

    if (sUserAgent == null) {
        Log.e(TAG + " - Conexion", getString(R.string.e_envio_datos));
    }
    // Create client and set our specific user-agent string
    HttpClient client = new DefaultHttpClient();
    HttpPost request = new HttpPost(url);
    request.setHeader("User-Agent", sUserAgent);
    try {
        HttpResponse response = client.execute(request);
        // Check if server response is valid
        StatusLine status = response.getStatusLine();
        if (status.getStatusCode() != HTTP_STATUS_OK) {
            // Error
        } else {
            InputStream in = response.getEntity().getContent();
            byte[] read = new byte [1024];
            int numReadBytes= 0, singleByte;
            boolean endFlow= false;
            do {
                singleByte= in.read();
                endFlow = singleByte == -1;
                if (!endFlow) {
                    read[numReadBytes] = (byte) singleByte;
                    numReadBytes++;
                }
            } while (!endFlow);
            if (numReadBytes> 0) {
    // Here you implement some code to store the array of bytes as a file
                storeDataWherever(read);
            }
        }
    } catch (IOException e) {
        Log.e(TAG + " - Conexion", e.getMessage());
    } catch (ArrayIndexOutOfBoundsException e){
        Log.e(TAG + " - Conexion", getString(R.string.e_respuesta_size));       
    }