TerraBAS
TerraBAS

Reputation: 37

Android WebView loading screen

I want to add a loading-circle-popup when loading a Site, I also want to upload/download files in-app but I don't have the knowledge to do something like that. It's a simple WebView function but I don't know how to get this done...

package net.schwarzis.htl_cloud;

import android.os.Bundle;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

@SuppressLint("JavascriptInterface")
public class MainActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    private WebView browser = null;

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

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // connect to our browser so we can manipulate it
        browser = (WebView) findViewById(R.id.mybrowser);

        // get settings so we can config our WebView instance
        WebSettings settings = browser.getSettings();

        // JavaScript?  Of course!
        settings.setJavaScriptEnabled(true);
        // clear cache
        browser.clearCache(true);

        browser.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                // do your stuff here
            }
        });
        // this is necessary for "alert()" to work
        browser.setWebChromeClient(new WebChromeClient());

        // add our custom functionality to the javascript environment
        browser.addJavascriptInterface(new MyCoolJSHandler(), "Cloud");

        // load a page to get things started
        browser.loadUrl("http://cloud.schwarzis.net");
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (browser.canGoBack() == true) {
                        browser.goBack();
                    } else {
                        finish();
                    }
                    return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }

    final class MyCoolJSHandler {
        // write to LogCat (Info)
        public void Info(String str) {
            Log.i("GoingNative", str);
        }

        // write to LogCat (Error)
        public void Error(String str) {
            Log.e("GoingNative", str);
        }

        // Kill the app
        public void EndApp() {
            finish();
        }
    }
}

    ` 

Upvotes: 0

Views: 1586

Answers (1)

vipul mittal
vipul mittal

Reputation: 17401

You can start a progess dialog before you call :

ProgressDialog pd=new ProgressDialog(this);
pd.show();

browser.loadUrl("http://cloud.schwarzis.net");

and dismiss it in

mWebView.setWebViewClient(new WebViewClient() {

   public void onPageFinished(WebView view, String url) {
       pd.dismiss();
    }
});

EDIT:

final ProgressDialog pd=new ProgressDialog(this);
    browser.setWebViewClient(new WebViewClient() {
                public void onPageFinished(WebView view, String url) {
                     pd.dismiss();
                }
            });
            // this is necessary for "alert()" to work
            browser.setWebChromeClient(new WebChromeClient());

            // add our custom functionality to the javascript environment
            browser.addJavascriptInterface(new MyCoolJSHandler(), "Cloud");

            // load a page to get things started
 pd.show();
            browser.loadUrl("http://cloud.schwarzis.net");

EDIT-2

 browser.setWebViewClient(new WebViewClient() {
                    public void onPageFinished(WebView view, String url) {
                         pd.dismiss();
                    }
               @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                pd.show();
                return true;
            }
                });

EDIT-3

 final ProgressDialog pd=new ProgressDialog(this);
   pd.setTitle("Whatever you want to set");

Upvotes: 1

Related Questions