When searching for an answer on google, it seems that I'm not the only one who has a problem that seems impossible to solve.
I was able to create a WebView with a custom WebViewClient - this allows me to have a processdialog and show an error message if the URL cannot be loaded.
But this creates a problem with JavaScript. The URL I'm loading contains JavaScript that changes some HTML CSS styles (showing or hiding the element) or redirects them to another onclick location - or maybe even wants to show a warning window. But using WebViewClient none of them work.
This is how I load the page:
public void loadUrl(String url) { final ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", getString(R.string.loading), true); final WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVerticalScrollBarEnabled(false); myWebView.setHorizontalScrollBarEnabled(false); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(myActivity.this, url, Toast.LENGTH_SHORT).show(); //Debugging purposes if (url.endsWith(".mp4")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "video/mp4"); view.getContext().startActivity(intent); } else { view.loadUrl(url); } return true; } public void onPageFinished(WebView view, String url) { //Toast.makeText(myActivity.this, "Oh no!", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(myActivity.this, description, Toast.LENGTH_SHORT).show(); String summary = "<html><body><strong>" + getString(R.string.lost_connection) + "</body></html>"; myWebView.loadData(summary, "text/html", "utf-8"); } }); //End WebViewClient myWebView.loadUrl(url); }
This could probably have been done more reasonably, but I'm new to Java and Android development ...
Is it possible for me to enable JavaScript for WebViewClient? Removing WebViewClient solves the problem, but then I can not catch events when the page fails or the download has finished.
android webview webviewclient
Repox Feb 23 '11 at 10:23 2011-02-23 10:23
source share