2017-02-01 3 views
4

Я нашел способ заставить mailto работать в веб-браузере android, но метод устарел. Любой может дать мне полный фрагмент кода нового метода. Вот метод, который я нашел на этом сайтеAndroid Web-View shouldOverrideUrlLoading() Устаревший. (Альтернативный)

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

+1

Вы посмотрели документы Android? Там есть ссылка на функцию замены. boolean shouldOverrideUrlLoading (представление WebView, запрос WebResourceRequest) –

+0

Да, Гейб Сечан Я посетил андроидные документы. но поскольку я новичок, я полностью не выполнял функцию замены. поэтому я прошу фрагмент кода –

+0

Его тривиальная замена. Вам не нужен фрагмент кода. Если вы такой новичок, вам лучше сидеть и думать об этом, и научиться решать такие проблемы для себя. –

ответ

16

Android N имеет этот метод подписи:

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 

Тот, который поддерживается всеми Android версии имеет этот метод подписи:

public boolean shouldOverrideUrlLoading(WebView view, String url) 

Что я должен сделать, чтобы заставить его работать на всех версиях?

вам необходимо переопределить как методы

Для каждого 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; 
} 
+0

спасибо. это хорошая работа – MinMaxUz

+0

@MinMaxUz ваш приветственный брат –