The webview.goBack () method does not call the toOverrideUrlLoading method

I want every page loaded in my application to go through a url redefinition method (where I do some html modifications). How can I achieve this?

public boolean shouldOverrideUrlLoading(WebView view, String url) { // do some html modifcations (myhtml) view.loadDataWithBaseURL(url, myhtml, "text/html", "utf-8", url); return false; } public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { web1.goBack(); // go back 1 step return true; } return super.onKeyDown(keyCode, event); } 
+4
source share
3 answers

on the finished method page you will get the url and you can reload the url

  @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); _dialog.dismiss(); } @Override public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) { // TODO Auto-generated method stub super.onReceivedError(view, errorCode, description, failingUrl); try{ _dialog.dismiss(); Toast.makeText(Showwebviewlatestnews.this, "NO Internet Connection Available", Toast.LENGTH_SHORT); }catch (Exception e) { } } 
+1
source

Try to return shouldOverrideUrlLoading true
Here is the explanation: -

True, if the host application wants to leave the current WebView and process the URL itself, otherwise it will return false. Reference

So this should do the trick,

 public boolean shouldOverrideUrlLoading(WebView view, String url) { // do some html modifcations (myhtml) view.loadDataWithBaseURL(url, myhtml, "text/html", "utf-8", url); return true; } 

And treat backPressed() as -

 @Override public void onBackPressed() { if (webview != null && webview.canGoBack()) { webview.goBack(); } else { super.onBackPressed(); } } 
0
source

// replace it

  public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { web1.goBack(); // go back 1 step return true; } return super.onKeyDown(keyCode, event);} 

WITH

 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { web1.goBack(); // go back 1 step web1.goBack(); return true; } return super.onKeyDown(keyCode, event);} 
0
source

All Articles