Android webviewでmailtoを機能させるメソッドを見つけましたが、このメソッドは非推奨です。新しいメソッドの完全なコードスニペットを教えてもらえますか。このサイトで見つけたメソッドは次のとおりです。
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以降には、次のメソッドシグネチャがあります。
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
すべてのAndroidバージョンでサポートされているものには、次のメソッドシグネチャがあります。
public boolean shouldOverrideUrlLoading(WebView view, String url)
すべてのバージョンで機能させるにはどうすればよいですか?
両方のメソッドをオーバーライドする必要があります
Android N+
を含むすべてのAPIについて、コードを変更する必要があります。
以下のコードを確認してください。 N
以上の下位APIの両方をターゲットにします
@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;
}