Reputation: 21600
I am using WebViewClient.shouldOverrideUrlLoading to catch any link clicks in the WebView. This works about 95% of the time, but sometimes it is simply not called.
I have noticed it in these three circumstances:
shouldOverrideUrlLoading
.Now my question is mostly how to fix problem 2, since the others are less of a big deal. However, if someone has solved either 1 or 3 I would love to hear about it.
Also, I should mention that I have tried different return values in shouldOverrideUrlLoading
and I have noticed that always returning true seems to have the best result, but the issues above still happen.
Upvotes: 15
Views: 13515
Reputation: 2630
I've had a similar issue when trying to change the webpage with js on the page that modifies window.location
. Turns out that modifying the url scheme/protocol makes the webview catch on shouldOverrideUrlLoading
. I know this doesn't help you since you don't own the HTML, but I thought it would help anyone else who stumbles upon this problem.
Upvotes: 5
Reputation: 1006584
If the HTML is your own, you can replace all traditional links with calls to your own Java object, injected into the WebView
via addJavascriptInterface()
. Then you will no longer be reliant upon shouldOverrideUrlLoading()
.
Otherwise, perhaps try to prevent the user from interacting with the page until onPageFinished()
.
I have not run into this problem, but I have not made extensive use of WebView
with arbitrary content, either.
Upvotes: 7