不推荐使用Android Web视图(替代). [英] Android Web-View shouldOverrideUrlLoading() Deprecated.(Alternative)
问题描述
我已经找到了一种使mailto在android webview中工作的方法,但该方法已被弃用.任何人都可以给我新方法的完整代码段. 这是我在此网站上找到的方法
I have Found a method to make mailto work in android webview but the method is deprecated.Can any one give me full code snippet of the new method. Here is the method I found on this site
Java 代码如下:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
initiateCall(url);
return true;
}
if (url.startsWith("mailto:")) {
sendEmail(url.substring(7));
return true;
}
return false;
}
但是当我将目标平台设置为Android 7.1.1时,它将无法正常工作
But it's not working when I have target platform as Android 7.1.1
推荐答案
Android N及更高版本具有以下方法签名:
Android N and above has this method signature:
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
所有Android版本都支持的签名具有以下方法签名:
The one that is supported by all Android versions has this method signature:
public boolean shouldOverrideUrlLoading(WebView view, String url)
我应该怎么做才能使其在所有版本上都能正常工作?
What should I do to make it work on all versions?
您需要覆盖这两种方法
对于每个包含Android N+
的api,您都需要更改代码.
For every api including Android N+
you need to change your code.
检查以下代码.它将同时定位N
和更高
Check this below code. It will target both lower API with N
and above
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
initiateCall(url);
return true;
}
if (url.startsWith("mailto:")) {
sendEmail(url.substring(7));
return true;
}
return false;
}
@RequiresApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if (url.startsWith("tel:")) {
initiateCall(url);
return true;
}
if (url.startsWith("mailto:")) {
sendEmail(url.substring(7));
return true;
}
return false;
}
这篇关于不推荐使用Android Web视图(替代).的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!