I have a question/problem, is "shouldOverrideUrlLoading" really deprecated? If so, what can I use instead?
It seems like shouldOverrideUrlLoading
is deprecated targeting Android N and I need to make an app work since API 19 until the latest right now which is Android N (beta), I use some features that are new in Android N (like Data Saver), so targeting Marshmallow will not help with the issue since I need to use those new features, here is the part of the code I use:
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
if (url.startsWith("http:") || url.startsWith("https:")) {
...
} else if (url.startsWith("sms:")) {
...
}
...
}
And this is the message Android Studio gave me:
Overrides deprecated method in 'android.webkit.WebViewClient' This inspection reports where deprecated code is used in the specified inspection scope.
Google says nothing about that deprecation.
I wonder if using @SuppressWarnings("deprecation")
will let me work on all devices since the API 19 until the latest Android N Beta (and its final version when it gets released), I can't test it myself, I never used that and I need to be sure that it works, so, anyone can tell?
Thanks a lot.
Use
No, it is not.
The one that is new to the N Developer Preview has this method signature:
The one that is supported by all Android versions, including N, has this method signature:
Override the deprecated one, the one that takes a
String
as the second parameter.Documenting in detail for future readers:
The short answer is you need to override both the methods. The
shouldOverrideUrlLoading(WebView view, String url)
method is deprecated in API 24 and theshouldOverrideUrlLoading(WebView view, WebResourceRequest request)
method is added in API 24. If you are targeting older versions of android, you need the former method, and if you are targeting 24 (or later, if someone is reading this in distant future) it's advisable to override the latter method as well.The below is the skeleton on how you would accomplish this:
Just like
shouldOverrideUrlLoading
, you can come up with a similar approach forshouldInterceptRequest
method.