2017-02-01 2 views
4

Ich habe eine Methode gefunden, um mailto in android webview arbeiten zu lassen, aber die Methode ist veraltet.Kann mir einen vollständigen Codeausschnitt der neuen Methode geben. Hier ist die Methode, die ich auf dieser Seite gefundenAndroid Web-View shouldOverrideUrlLoading() Veraltet. (Alternative)

Java Code ist unten:

@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; 
    } 

Aber es funktioniert nicht, wenn ich die Zielplattform als Android 7.1.1

+1

Haben Sie sich die Android-Dokumentation angesehen? Sie haben einen Link zur Ersatzfunktion genau dort. boolean sumoOverrideUrlLoading (WebView-Ansicht, WebResourceRequest Anfrage) –

+0

Ja, Gabe Sechan Ich besuchte Android Docs. Aber als ich ein Neuling bin, habe ich nicht die Ersatzfunktion vollständig. Also frage ich nach dem Code-Snippet –

+0

Es ist ein trivialer Ersatz. Sie benötigen kein Code-Snippet. Wenn Sie so ein Neuling sind, sind Sie besser dran, darüber nachzudenken und zu lernen, wie Sie solche Probleme selbst lösen können. –

Antwort

16

Android N haben hat diese Methode Unterschrift:

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 

Die eine, die von allen Android-Versionen hat diese Methode Unterschrift unterstützt:

public boolean shouldOverrideUrlLoading(WebView view, String url) 

Was soll ich tun, um es auf allen Versionen zu arbeiten?

Sie müssen außer Kraft setzen beide Methoden

Für jeden api einschließlich Android N Sie müssen den Code ändern ... Überprüfen Sie dieses Code unten .. es wird mit 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; 
} 
sowohl niedrigere API Ziel
+0

danke. es ist gute Arbeit – MinMaxUz

+0

@MinMaxUz Ihr Willkommen Bro –

Verwandte Themen