首页 > 解决方案 > Android APP - 拨打电话号码 net::ERR_UNKNOWN_URL_SCHEME

问题描述

我用 Android Studio 创建了一个非常简单的 APP,用于加载网站。在网站上,也有留下电话号码的人的不同条目。加载应用程序并单击“电话”字段时,收到错误消息:网站电话:066653353 无法加载 网络 :: ERR_UNKNOWN_URL_SCHEME

这是 MainActivity.java 文件:

package name.work;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import name.work.R;


public class MainActivity extends Activity {

    WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myWebView = (WebView) findViewById(R.id.myWebView);

        myWebView.loadUrl("https://www.mydomain.work");
        myWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
                viewx.loadUrl(urlx);
                return false;
            }
        });

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.goBack(); // Go to previous page
            return true;
        }
        // Use this as else part
        return super.onKeyDown(keyCode, event);
    }
}

请帮我解决这个问题!非常感谢 :-) 关于shotput

标签: android

解决方案


在内部shouldOverrideUrlLoading()方法中,您可以检查 url 是否以开头tel:并打开设备的拨号器应用程序,如下所示:

public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
if (urlx.startsWith("tel:")) { 
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(urlx)); 
    startActivity(intent);
    return true;
}
viewx.loadUrl(urlx);
return true;

}


推荐阅读