我找到了一个让android在webview中工作的方法,但该方法已被弃用。任何人都可以给我新方法的完整代码片段。 这是我在这个网站上找到的方法
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
时,它无效答案 0 :(得分:21)
Android N及以上版本有此方法签名:
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
所有Android版本支持的版本都有此方法签名:
public boolean shouldOverrideUrlLoading(WebView view, String url)
我该怎么做才能让它适用于所有版本?
你需要覆盖两种方法
对于包含Android N+
的每个API,您需要更改代码。
检查以下代码。它将针对N
及以上
@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;
}