2014-02-20 107 views
1

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

当我使用下面的逻辑,即使我在web视图登录,浏览器重定向到登录页面。请帮忙。

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

您可以在请求头添加cookie。 http://stackoverflow.com/questions/22935214/file-download-not-working-in-android-using-cordova-2-9-0/24646292#24646292 – h3n

回答

0

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

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

+0

我仍无法下载,提供一些解决方案 – nandudroid