无法使用webview在android应用程序中下载文件

时间:2014-02-20 07:12:08

标签: android login webview download

。我正在尝试从URL下载文件 。当我从普通浏览器打开URL时,它会将我重定向到登录页面,一旦我登录,就会开始下载 。我需要在我的应用程序中具有相同的功能 。我需要通过webview登录。登录后,应触发下载。

当我使用以下逻辑时,即使我在webview中登录,浏览器也会重定向到登录页面。请帮忙。

private void loadPage(final String iUrl) {
        // TODO Auto-generated method stub
        WebView webView = (WebView) findViewById(R.id.webView1);
        WebSettings webSettings = webView.getSettings(); 
        webSettings.setJavaScriptEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setBuiltInZoomControls(true);
        int default_zoom_level=100;
        webView.setInitialScale(default_zoom_level);
        final Activity activity = this;
        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                activity.setTitle("I-Aurora: Loading...");
            }
        });
        webView.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(getApplicationContext(), description, Toast.LENGTH_SHORT).show();
            }
            public void onPageFinished (WebView view, String url) {
                activity.setTitle("I-Aurora: Login");
            }
        });
        webView.setDownloadListener(new DownloadListener() {
            public void onDownloadStart(String url, String userAgent,String contentDisposition,String mimetype,long contentLength) {
                   Intent int3 = new Intent(Intent.ACTION_VIEW);
                   int3.setClassName("com.android.chrome", "com.google.android.apps.chrome.Main");
                   int3.setData(Uri.parse(url));
                   startActivity(int3);
            }
        });
        webView.loadUrl(iUrl);
        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getApplicationContext(), "Button Click" , Toast.LENGTH_SHORT).show();
            }
        }); 
        return;
    }

1 个答案:

答案 0 :(得分:0)

使用WebView登录时,应用程序中的WebView将登录,而不是浏览器。两者之间没有共享状态。

您需要做的是自己在DownloadListener中处理下载(例如this)和pass the cookies needed for authentication