0

我在 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;

    }
4

1 回答 1

0

我认为这个问题最可能的原因是您的网址不正确。所以你最好在logcat中检查一下。url 不应该是tel:xxxxxxx其他任何东西。此外,您的代码中有几处不正确。

首先,当url以“”开头时,你应该使用ACTION_CALLACTION_DIAL不使用。因为电话应用程序中没有具有意图过滤器和数据模式电话的组件。ACTION_VIEWtel:ACTION_VIEW

其次,您应该验证 url 是否为 startsWithtel: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;

}
于 2013-04-30T07:39:15.700 回答