【问题标题】:Having Android WebView detect and popup email dialog or phone call dialog让 Android WebView 检测并弹出电子邮件对话框或电话对话框
【发布时间】:2010-08-03 21:52:37
【问题描述】:
【问题讨论】:
标签:
android
android-webview
【解决方案1】:
这是电话链接,如果是邮件链接,你可以添加另一个:)
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;
}
【解决方案2】:
我已将 WebView 设置为检测电话、电子邮件和地址(在这种情况下会转到 Google 地图)。这就是我所拥有的:
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);
【解决方案3】:
@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;
}