0

tel: と sms: を WebView で試しました。tel: を含む URL を取得したらクリックした後、電話のコール ユーティリティを開きます。次に、数字の後に文字「N」が続きます。SMS で: 電話の SMS ユーティリティを取得していますが、番号がありません。両方に 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

この問題の最も考えられる理由は、URL が正しくないことだと思います。したがって、logcat で確認することをお勧めします。URL は他のものであってはなりtel:xxxxxxxません。さらに、コードにはいくつかの誤りがあります。

まず、url が " " で始まる場合に使用するACTION_CALLACTION_DIALどうかを指定します。電話アプリケーションには、インテント フィルタとデータ スキーマ telを持つコンポーネントがないためです。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 に答える