【问题标题】:WebView & DownloadManagerWebView & 下载管理器
【发布时间】:2016-04-02 04:35:51
【问题描述】:

我正在制作一个应用程序,它的工作是加载一个特定的网站。一切正常,除了下载文件。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    adviser = (WebView) findViewById(R.id.webView);
    getActionBar().hide();
    adviser.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            adviser.setDownloadListener(new DownloadListener() {
                public void onDownloadStart(String url, String userAgent,
                        String contentDisposition, String mimetype,
                        long contentLength) {

                    Request request = new Request(Uri.parse(url));

                    request.allowScanningByMediaScanner();
                    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    request.setDestinationInExternalPublicDir(
                            Environment.DIRECTORY_DOWNLOADS,
                            customizeurl(contentDisposition));
                    DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                    dm.enqueue(request);

                    Toast.makeText(getApplicationContext(), "downloading",
                            Toast.LENGTH_LONG).show();
                }
            });
            return true;
        }
    });

    adviser.getSettings().setJavaScriptEnabled(true);
    adviser.getSettings().setSupportZoom(true);
    adviser.getSettings().setAllowFileAccess(true);
    adviser.getSettings().setAllowUniversalAccessFromFileURLs(true);

    adviser.getSettings().setUseWideViewPort(true);
    adviser.getSettings().setLoadWithOverviewMode(true);
    adviser.setVerticalScrollBarEnabled(true);
    adviser.setHorizontalScrollBarEnabled(false);
    adviser.getSettings().setAppCacheEnabled(true);
    adviser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    adviser.getSettings().setSupportMultipleWindows(true);

    adviser.getSettings().setUserAgentString("Mozilla");
    adviser.loadUrl("http://localhost/www/site/login");
}

网址:localhost/www/site/download?action=newaction&dl=folder\subfolder\subsubfolder\1449822583856.jpg

uri: localhost/www/site/download?action=newaction&dl=folder\subfolder\subsubfolder\1449822583856.jpg

userAgent: Mozilla //无论我使用什么代理它都不会工作

contentDisposition:附件;文件名=1449822583856.jpg

mimetype:图像/jpeg

内容长度:-1

它将我的主页下载为 phpfile,而不是我的 jpg。 有任何想法吗? 感谢您的帮助:)

编辑:内容长度可能有问题?或者可能是一些会话问题?

【问题讨论】:

    标签: android webview android-webview android-download-manager


    【解决方案1】:

    很明显它会下载一个php文件,因为你提供的url不包含文件的直接地址

    URL = localhost/www/site/download?action=newaction&dl=folder\subfolder\subsubfolder\1449822583856.jpg

    所以在浏览器中输入它会显示图像,但地址不属于任何文件直接尝试从 webview 中获取正在显示在 Webview 中的 img 元素并将其 src 属性值传递给 DownloadManager,你将得到你的图像已下载

    【讨论】:

    • 我无法直接获取网址。
    • 顺便说一句,将此网址输入浏览器不会显示图像,但会开始请求下载...
    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2014-01-14
    • 2017-05-03
    相关资源
    最近更新 更多