Android Web 视图 shouldOverrideUrlLoading() 已弃用。(替代)
Android Web-View shouldOverrideUrlLoading() Deprecated.(Alternative)
我找到了一种使 mailto 在 android webview 中工作的方法,但该方法是 deprecated.Can 谁能给我新方法的完整代码片段。
这是我在这个网站上找到的方法
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
时它不起作用
Android N and above has this method signature:
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
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?
you need to override both the methods
对于每个 api,包括 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;
}
我找到了一种使 mailto 在 android webview 中工作的方法,但该方法是 deprecated.Can 谁能给我新方法的完整代码片段。 这是我在这个网站上找到的方法
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
时它不起作用Android N and above has this method signature:
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
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?
you need to override both the methods
对于每个 api,包括 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;
}