androidwebviewclientwebclient

How do I use DownloadListener?


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/");
        }  
    }
}

Solution

  • 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;
         }