我在WebView中尝试过tel:和sms:点击后,如果我得到URL包含电话:那么我打开电话的呼叫实用程序。然后我得到数字,然后是字符' N'。 一个短信:我正在使用手机短信但没有号码。两个URL号都存在。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
result = false;
// for telephone
if (url.contains("tel:")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
result = true;
}
// for SMS or message.
if (url.contains("sms:")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
result = true;
}
Log.d(TAG, url);
return result;
}
答案 0 :(得分:0)
我认为此问题的最可能原因是您的网址不正确。所以你最好在logcat中检查一下。该网址应为tel:xxxxxxx
,而不是其他任何内容。此外,代码中有几个不正确的东西。
首先,当网址以“ACTION_CALL
”开头时,您应该使用ACTION_DIAL
或ACTION_VIEW
而不是tel:
。因为Phone应用程序中没有组件具有带ACTION_VIEW
和数据模式tel的intent过滤器。
其次,您应该验证网址是否与tel:
和sms:
一起启动,而不仅仅是包含。
例如:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
result = false;
// for telephone
if (url.startsWith("tel:")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_CALL, Uri.parse(url)));
result = true;
}
// for SMS or message.
if (url.startsWith("sms:")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
result = true;
}
Log.d(TAG, url);
return result;
}