【问题标题】:Using tel: Hyperlinks on Android < 4 alternative?使用电话:Android < 4 替代方案上的超链接?
【发布时间】:2013-04-26 16:25:07
【问题描述】:

我有一个app,它提供英国 08 号码的普通固定电话号码。

目前这是应用程序中显示的网页,当用户找到他们想要的号码并点击绿色电话图标时。我正在使用以下 JavaScript 来强制然后强制一个 tel: 与号码的链接以调出 dailer。

document.location.href = 'tel:'+number;//push browser to call number

据我所知,此方法适用于所有较新的 android 4.0 及更高版本。但是当我使用我的旧橙色旧金山电话(android 2.3)时,它并没有带来 dailer。相反,它只是尝试打开一个以 tel:01xxxxxxxx 作为 URL 的新页面,然后显示网页不可用消息。

我认为这是因为 tel: 是 HTML5 的一部分,这就是它不起作用的原因。是否有任何替代方案适用于所有版本?

【问题讨论】:

  • 您是否将其封装在 webview 中 - 也就是您是否也可以访问原生 Android 代码?
  • 是的,它在 web 视图中,只是像 iframe 一样显示我的网页

标签: javascript android html tel


【解决方案1】:

tel: 是首选 - 自 1990 年代以来。 callto: 可能对某些设备更有效。另见:How to mark-up phone numbers?

编辑

由于您的页面在 Android WebView 中运行,因此您可以使用 hack 处理此错误(也在 Android WebView "tel:" links show web page not found 中进行了描述):

myWebView.setWebViewClient(new 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;  
    }  
} 

您可能需要许可

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

【讨论】:

  • 我也试过 callto: ,但恐怕还是会产生同样的结果
  • 好的,我下班回家后会尝试这个并告诉你,不过提前谢谢
  • 不幸的是,这似乎没有什么不同:/
  • @jampez77,为了确保我们在同一页面上,我用要使用的代码编辑了我的帖子。你能验证这不起作用吗?
  • 刚刚尝试了新代码,它运行良好,非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多