delight-im / delight-im/Android-AdvancedWebView
shouldOverrideUrlLoading does not seem to get called properly + appreciation post
- Dominant language
- Java
- Stars
- 2.4k
- Forks
- 578
- PR merge metrics
- No merged PRs in 30d
Description
First off, thanks so much for this project! 🙏
Saved me lots of time - wish I knew about this before ^^
During implementation of your library, I found a small problem (might as well be on my side)
When registering a `WebViewClient()` like this, I would normally expect the `shouldOverrideUrlLoading` function to be called.
```
wv?.webViewClient = object : WebViewClient() {
override fun onReceivedError(view: WebView?,request: WebResourceRequest?,error: WebResourceError?) {
//
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
Log.d("LOGGER", "url-triggered")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (request != null) {
val u = request.url.toString()
if(u.contains("keyword")) {
// website should not load, custom handler
return true
}
}
}
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
}
return super.shouldOverrideUrlLoading(view, request)
}
```
## Expected
- when loading a new url (calling `wv?.loadUrl()`) the `shouldOverrideUrlLoading` function should be called
- as a result
- `url-triggered` should be logged
- the url should not be loaded, because of the `return true`
## Actual
- url gets loaded
- `shouldOverrideUrlLoading` is not called; noting is logged
## Possibility to Avoid this / get the expected behaviour
I would not call this a clean approach, but it works 🙄
- override `onPageStarted`
- check url
- `wv?.stopLoading()`
- `wv?.onBackPressed()`
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.