webview不下载文件

时间:2012-12-10 05:15:32

标签: android android-layout

美好的一天, 我做了一个应用程序,但我撞墙了。 当您使用桌面浏览器(如firefox或chrome)访问网站并点击下载链接时,它会开始下载文件,但是当我在我的Android应用程序中打开同一页面时,使用webview显示页面并单击下载链接时没有任何反应它只是坐在那里,因为它不知道如何处理该链接。如果你能帮助我,那将是一个巨大的帮助,让我重新回到正轨。

这是我用于我网站上的pdf文件的下载链接:

<img src="images/Art1.jpg" width="80" height="166" /><a href="m2.pdf">Download</a>

这是我的Android应用程序的main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
    <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
    />

如果有人能帮助我指出正确的道路,我将非常感激。

package com.jeffonlinelibrary;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebPageLoader extends Activity
{
    final Activity activity = this;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
        WebView webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);

        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
        });

        webView.setDownloadListener(new DownloadListener() {

            public void onDownloadStart(String url, String userAgent,
                    String contentDisposition, String mimetype,
                    long contentLength) {
                // handle download, here we use brower to download, also you can try other approach.
                Uri uri = Uri.parse(url);
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }
        });

        webView.loadUrl("http://jeffonlinelibrary.comuv.com/jeffOnlinelibraryApp");
    }
}

1 个答案:

答案 0 :(得分:8)

将Setdownloadlistener添加到WebView。并使用浏览器应用程序或DownloadManager下载文件。

    webview.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,
                long contentLength) {
            // handle download, here we use brower to download, also you can try other approach.
            Uri uri = Uri.parse(url);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    });