Наличие Android WebView для обнаружения и всплывающего диалогового окна электронной почты или телефонного звонка - PullRequest
5 голосов
/ 04 августа 2010

На андроиде, когда встроенный браузер наталкивается на электронную почту или номер телефона и нажимается, появляется диалоговое окно для каждого.

Однако, если я перехожу на этот URL в веб-просмотре моего приложения, это уже не так.

Есть ли в моем веб-представлении все те же свойства, что и в приложении браузера, при обнаружении электронных писем и телефонных номеров и при нажатии соответствующих диалоговых окон по умолчанию?

Я знаю, что iPhone может сделать это с помощью флажка в Интерфейсном Разработчике очень легко, я надеюсь, что Android может сделать то же самое.

Я посмотрел на такие ссылки, как:

Есть ли способ иметь URL-адреса и телефонные номера автоматической ссылки WebView в Android?

и использование функции, которая прерывает щелчок по ссылке, но это не очень мне помогает, потому что номера телефонов и электронные письма не обязательно должны быть связаны.

Ответы [ 4 ]

3 голосов
/ 20 апреля 2011

Я искал ту же проблему, что и у вас.

Если вы хотите сохранить URL-адрес, содержащийся в веб-просмотре, но у вас есть номер телефона, запустите программу набора номера, а адрес электронной почты запустите почтовый клиент, затем попробуйтеthis.

Ссылки "tel:" на Android WebView показывают, что веб-страница не найдена

У меня сработало нижнее решение.

2 голосов
/ 16 апреля 2015

Я настроил WebView для обнаружения телефона, электронной почты и адреса (в этом случае будет идти к Google Maps)Вот что у меня есть:

        URL = "file:///android_asset/dir/people.html";
        webView = (WebView) findViewById(R.id.webViewDir);
        webView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                startActivity(intent);
                return true;
            } else if (url.startsWith("mailto:")) {
                url = url.substring(7);
                String body = "Body of message.";
                Intent mail = new Intent(Intent.ACTION_SEND);
                mail.setType("application/octet-stream");
                mail.putExtra(Intent.EXTRA_EMAIL, new String[] { url });
                mail.putExtra(Intent.EXTRA_SUBJECT, "Subject");
                mail.putExtra(Intent.EXTRA_TEXT, body);
                startActivity(mail);
                return true;
            } else if (url.startsWith("map:")){
                url = url.substring(4);
                String map = "http://maps.google.com/maps?q=" + url; 
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(map));
                startActivity(intent);
                return true;
            }
            return false;
        }
    });
    webView.loadUrl(URL);
2 голосов
/ 23 февраля 2012

Это для телефонной ссылки, вы можете добавить другую, если на почту ссылку:)

public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("tel:")) { 
                Intent intent = new Intent(Intent.ACTION_DIAL,
                        Uri.parse(url)); 
                startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) {
            view.loadUrl(url);
        }
        return true;
    }
0 голосов
/ 06 марта 2013
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.startsWith("mailto:")) { 
                    try {
                        Intent emailIntent = new Intent(Intent.ACTION_SEND, Uri.parse(url));
                        emailIntent.setType("message/rfc822");
                        String recipient = url.substring( url.indexOf(":")+1 );
                        if (TextUtils.isEmpty(recipient)) recipient = "loco@wareninja.com";
                        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{recipient});
                        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, mContext.getString(R.string.email_subject));
                        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, mContext.getString(R.string.email_message, " "));

                        mContext.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
                    }
                    catch (Exception ex) {}
            }
            return true;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...