下载管理器在WebView中无法在android中下载.pdf和.docx文件

下载管理器在WebView中无法在android中下载.pdf和.docx文件,android,webview,sdk,download-manager,Android,Webview,Sdk,Download Manager,我正在webview上加载此文件, 我的代码可以很好地加载url,但每当我单击url中的文件时,它都不会下载,我认为问题在于文件扩展名 我还需要将文件下载到SD卡中的特定文件夹中 目前我正在使用下面的代码,我不明白我的代码中可能有什么错误 我的主要活动是 public class GosActs extends Activity{ WebView web; @Override protected void onCreate(Bundle savedInstanceState) { s

我正在webview上加载此文件, 我的代码可以很好地加载url,但每当我单击url中的文件时,它都不会下载,我认为问题在于文件扩展名

我还需要将文件下载到SD卡中的特定文件夹中

目前我正在使用下面的代码,我不明白我的代码中可能有什么错误

我的主要活动是

public class GosActs extends Activity{

WebView web;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gos_acts);

    web = (WebView)findViewById(R.id.wGAweb);

    web.setWebViewClient(new WebViewClient(){

        public void onLoadResource(WebView view, String url) {

            //load.setVisibility(View.VISIBLE);
        }

        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if(url.endsWith(".pdf")){
                Uri source = Uri.parse(url);
                DownloadManager.Request request = new DownloadManager.Request(source);
                request.setDescription("requested GO downloading");
                request.setTitle("go.pdf");

                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Go.pdf");

                DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                manager.enqueue(request);
            } else if(url.endsWith(".docx")){
                Uri source = Uri.parse(url);
                DownloadManager.Request request = new DownloadManager.Request(source);
                request.setDescription("requested GO downloading");
                request.setTitle("go.pdf");

                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Go.pdf");

                DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                manager.enqueue(request);
            }
            else
            view.loadUrl(url);

            return true;
        }

        public void onPageFinished(WebView view, String url) {
            //load.setVisibility(View.GONE);
        }

    });
    web.getSettings().setJavaScriptEnabled(true);
    web.getSettings().setBuiltInZoomControls(true);
    web.getSettings().setDisplayZoomControls(false);
    web.getSettings().setLoadWithOverviewMode(true);
    web.getSettings().setUseWideViewPort(true);
    web.loadUrl("http://goir.ap.gov.in");


}
我的gos_acts.xml是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#288A0E"
android:orientation="vertical" >


<WebView
    android:id="@+id/wGAweb"
    android:layout_margin="5dip"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_card" />   

</LinearLayout>

我还在minifest.xml中添加了所需的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.INTERNET"/>


当您在调试器中单步执行代码或添加日志语句时,您的代码是否会像预期的那样进入
shouldOverrideUrlLoading()
和分支?如果是,并且您确定正在调用您的
DownloadManager
代码,日志中是否有来自
Downloads
应用程序的消息?@commonware我刚刚错过了它,我的代码没有进入shouldOverrideUrlLoading()方法我建议您将
@Override
注释添加到
WebViewClient
方法中,确保他们的签名正确无误。另外,请记住,
shouldOverrideUrlLoading()
几乎只用于简单的链接和服务器重定向。其他东西,如表单或基于JavaScript的重定向,将不会触发
shouldOverrideUrlLoading()
@commonware非常感谢,它在添加'@Override'注释后可以很好地用于带有.pdf扩展名的链接,但仍然不起作用,我认为它们不是链接,但可以在crome浏览器上使用。