我正在研究一个网站的 Android Webview。我有包括mailto联系和电子邮件给朋友。网页端的代码片段:
联系方式: <a href="mailto:contact@example.com">contact@example.com</a>
给朋友的电子邮件: <a href="mailto:?subject=Check out this product&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 配合良好。但是,它不适用于发送给朋友的电子邮件。Subject和Composed email字段中有空白,但字段To包括/product-detail/105/必须为空白。当我在移动浏览器中打开网站时,它工作正常。那么,我应该在上面的代码中为 webview 做什么来处理这个问题?可以做些什么来解决这个问题?
我用这个解决了我的问题:
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)
| 归档时间: |
|
| 查看次数: |
4373 次 |
| 最近记录: |