【问题标题】:Telephone link in webview is opening in browserwebview中的电话链接正在浏览器中打开
【发布时间】:2013-10-01 02:08:30
【问题描述】:

我的 webview 应用上有一个电话链接:tel:062123658,但是当我点击它时,我却找不到网页。

这是我的代码:

public class FullscreenActivity extends Activity {

    private WebView webView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fullscreen);

        webView = (WebView) findViewById(R.id.webView);
        webView.setWebViewClient(new myWebClient());
        webView.loadUrl("http://www.mywebsite.nl");
        webView.setVerticalScrollBarEnabled(false);
    }

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("tel:")) { 
                Intent intent = new Intent(Intent.ACTION_DIAL,
                        Uri.parse(url)); 
                startActivity(intent); 
        }else if(url.startsWith("http:") || url.startsWith("https:")) {
            view.loadUrl(url);
        }
        return true;
    }

我该如何解决这个问题?

【问题讨论】:

    标签: android android-webview tel


    【解决方案1】:

    你应该重写 WebViewClient 中的一个函数:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fullscreen);
    
        webView = (WebView) findViewById(R.id.webView);
        webView.setWebViewClient(new myWebClient());
        webView.loadData("Hello World, <a href=\"tel:3174562564\">317.456.2564</a> ", "text/html","utf-8");
      //webView.loadUrl("http://www.techjini.com/contactus.html");
        webView.setVerticalScrollBarEnabled(false);
    }
    
    class myWebClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
               if (url.startsWith("tel:")) { 
                   Intent intent = new Intent(Intent.ACTION_DIAL,
                           Uri.parse(url)); 
                   startActivity(intent); 
           }else if(url.startsWith("http:") || url.startsWith("https:")) {
               view.loadUrl(url);
           }
           return true;
        }
    }
    

    【讨论】:

      【解决方案2】:

      试试这个方法:

      webView.setWebViewClient(new WebViewClient() {
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
      
              if (url.startsWith("tel:")) { 
                  Intent intent = new Intent(Intent.ACTION_DIAL,
                          Uri.parse(url)); 
                  startActivity(intent); 
              }else if(url.startsWith("http:") || url.startsWith("https:")) {
                  view.loadUrl(url);
              }
              return true;
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-12
        • 2018-02-11
        • 2014-03-12
        • 2017-08-06
        • 1970-01-01
        • 2011-07-26
        • 2015-12-09
        • 2021-09-23
        相关资源
        最近更新 更多