Does anyone know if there is a way to intercept a "page not found" or "page not loading error" in WebView?
According to the android documentation, onReceivedError()
should be able to intercept. but i tested it in an app which I deleberately gave the wrong URL, and it didn't do anything.
I want my app to be able to give my own custom error message if the URL is ever unavailable for any reason.
this is the code that did nothing:
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// custom error handling ... show and alert or toast or something
}
According to documentation and my experience it should work quite fine. You just have to set your
WebClient
with overriden methodonReceivedError
in your WebView.Here is the snippet from some of my old test app:
I've tested it and it works quite fine. Check your logs and see what kind of code error do you get. Hope it helps.
You should use this after the on Page finished
I have tried using onReceivedError both inside shouldOverrideUrlLoading() and outside that method but in the WebViewClient. I even tried outside in the main Activity class. I was not happy with the inconsistent results. So I settled on using a test method, isOnline(), and calling that before calling loadUrl().
Then this onReceivedError is in the WebViewClient but outside the overloadurlthingy method. This seems to consistently prevent the stupid, smirking-android error pages.
Some people might consider this resource-heavy. Well, not heavy the way the Android Facebook and Google+ apps are. And not the way Google services are. I frankly don't mind using up a little of those apps oxygen. Call me a bad boy...