尝试打开tell链接时,Android webview应用程序崩溃

时间:2017-10-01 15:55:37

标签: java android android-webview tel

我试图在Android网页浏览器上打开一个tel:链接,但它会让我的应用程序崩溃,请有人帮忙解决这个问题或告诉我出错了什么。

MyAppWebViewClient.java

package org.event2u.event2u;

import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().endsWith("event2u.org")) {
            return false;
        }
        if (url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            view.getContext().startActivity(intent);
            //view.reload();
            return true;
        }
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;
    }
}

1 个答案:

答案 0 :(得分:0)

我已尝试使用此代码,应用程序不会崩溃。

public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            } else {
                view.loadUrl(url);
                return true;
            }

         }
    }

我认为它崩溃的问题是因为你这样说:

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
        view.getContext().startActivity(intent);