How do I use DownloadListener?

Paritosh Anand picture Paritosh Anand · Mar 15, 2012 · Viewed 19.3k times · Source

I am creating an app that allows college students to download their study material from within the app instead of the browser. The home page has lots of subject names. Each subject name leads to new webpage. So, I have used WebViewClient. But, at the final page when I click on the *.ppt or *.pdf files it opens junk.

I want these files to be downloaded within the app.

How do I implement DownloadListener

package jiit.app;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class sm extends Activity
{  
    WebView browser;

    protected void onCreate(Bundle anyvar) 
    {
        super.onCreate(anyvar);
        setContentView(R.layout.sm);
        browser=(WebView)findViewById(R.id.webkit);
        WebSettings webSettings = browser.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        browser.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
        browser.setWebViewClient(new WebViewClient());
        {
            browser.loadUrl("http://www.sm.ividhya.com/j128/");
        }  
    }
}

Answer

ρяσѕρєя K picture ρяσѕρєя K · Mar 15, 2012

try this DownloadListener example :

public class webActivity  extends Activity {

 WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.webView=(WebView) this.findViewById(R.id.webview);
        this.webView.getSettings().setSupportZoom(false);
        this.webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        this.webView.loadUrl("http://www.sm.ividhya.com/j128/");
        this.webView.setWebViewClient(new WebViewClientDemo());
        webView.setDownloadListener(new DownloadListener() {
            public void onDownloadStart(String url, String userAgent,
                            String contentDisposition, String mimetype,
                            long contentLength) {

                                          Uri uri = Uri.parse(url);
           Intent intent = new Intent(Intent.ACTION_VIEW,uri);
                    startActivity(intent);
            }
    });

    }
  private class WebViewClientDemo extends WebViewClient {
    @Override

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