MailTo 在 Android WebView 中不起作用

Sat*_*eya 2 android webview

我正在研究一个网站的 Android Webview。我有包括mailto联系和电子邮件给朋友。网页端的代码片段:

联系方式: <a href="mailto:contact@example.com">contact@example.com</a>

给朋友的电子邮件: <a href="mailto:?subject=Check out this product&amp;body=I found this awesome product%20http://www.example.com/product-detail/61/" title="Email to a Friend" class=""><span>Email to a Friend</span></a>

我在shouldOverrideUrlLoading方法中包含以下 Android 端的代码片段:

@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if( url.startsWith("http:") || url.startsWith("https:") ) {
            return false;
        }

        else if (url.startsWith("tel:")) {
            Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            startActivity(tel);
            return true;
        }
        else if(url.startsWith("mailto:")) {
            MailTo mailTo = MailTo.parse(url);
            String emailAddress = mailTo.getTo();
            String subject = mailTo.getSubject();
            String body = mailTo.getBody();
            String cc = mailTo.getCc();
            Intent mail = new Intent(Intent.ACTION_SEND,Uri.parse(url));
            mail.setType("application/octet-stream");
            mail.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress});
            mail.putExtra(Intent.EXTRA_SUBJECT, subject);
            mail.putExtra(Intent.EXTRA_TEXT, body);
            mail.putExtra(Intent.EXTRA_CC, cc);
            startActivity(mail);
            return true;
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

这与 Contact 配合良好。但是,它不适用于发送给朋友的电子邮件。SubjectComposed email字段中有空白,但字段To包括/product-detail/105/必须为空白。当我在移动浏览器中打开网站时,它工作正常。那么,我应该在上面的代码中为 webview 做什么来处理这个问题?可以做些什么来解决这个问题?

Sat*_*eya 8

我用这个解决了我的问题:

 public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("tel:")) {
            Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            startActivity(tel);
            return true;
        }
        else if (url.contains("mailto:")) {
             view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;

        }else {       
            view.loadUrl(url);
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)