2017-02-01 20 views
4

私はandroid webviewでmailtoを動作させる方法を見つけましたが、そのメソッドは廃止されました。新しいメソッドの完全なコードスニペットを教えてください。Android Web-View shouldOverrideUrlLoading(代替)

@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

+1

あなたはAndroidのドキュメントを見ましたか?彼らはそこに置き換え機能へのリンクを持っています。 boolean shouldOverrideUrlLoading(WebViewビュー、 WebResourceRequest request) –

+0

はい、Gabe Sechan私はアンドロイドのドキュメントを訪問しましたが、私が初心者であるときには、私は完全に置換しませんでした。だから私はコードスニペット –

+0

その些細な取り替えを求めています。コードスニペットは必要ありません。あなたがそれほど初心者であれば、座って考え、自分でそのような問題を解決する方法を学ぶ方がよいでしょう。 –

答えて

16

アンドロイドNとしてターゲットプラットフォームを持っている場合、それは働いていない: は、ここで私は、このサイト

のJavaコードで見つける方法を以下に示していますこのメソッドのシグネチャがあります。

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 

すべてのAndroidのバージョンによってサポートされているものは、このメソッドのシグネチャを持っています

public boolean shouldOverrideUrlLoading(WebView view, String url) 

私はそれがすべてのバージョンで動作させるために何をすべきか?

あなたは...それは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; 
} 
で両方の下APIをターゲットになるあなたは、コードの下に、これを確認してください...あなたのコードを変更する必要があり Android Nを含むすべてのAPIの方法

の両方をオーバーライドする必要があります

+0

ありがとう。それは良い仕事です – MinMaxUz

+0

@MinMaxUzあなたの歓迎仲間 –

関連する問題