首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android HTML电话链接err_unknown_url_scheme

Android HTML电话链接err_unknown_url_scheme
EN

Stack Overflow用户
提问于 2015-09-25 10:14:37
回答 4查看 23.4K关注 0票数 4

我在一个带有5.5.1/棒棒糖的Nexus 5上实现了一个看起来非常简单的解决方案,但是遇到了困难。我希望直接在手机上存储本地HTML页面,以保存参考电话号码的大型列表:

代码语言:javascript
复制
<a href="tel:123-456-7890">Call Harold's Chicken Shack</a>
<a href="tel:234-567-8901">Call In n' Out Burger</a>

这曾经是没有任何问题的工作,但今年早些时候的某个时候,Android更新禁用了它。在此之前,单击该链接将打开电话上的拨号器,并开始呼叫该号码。现在,另一个网页显示为"Webpage not available“,并在主体中包含"The webpage at tel:123-456-7890 and not be loaded : net::ERR_UNKNOWN_URL_SCHEME”。

我已经在谷歌上搜索了很多,但仍然不清楚解决方案。

这个问题在这里讨论:

Getting net::ERR_UNKNOWN_URL_SCHEME while calling telephone number from HTML page in Android

但是所有关于这个问题的回答似乎要么不正确,要么描述了一个没有引用的解决方案。

有些人建议对电话号码进行各种格式更改:

代码语言:javascript
复制
<a href="tel:123-456-7890">Call Harold's Chicken Shack</a>
<a href="tel:1234567890">Call Harold's Chicken Shack</a>
<a href="tel:+123-456-7890">Call Harold's Chicken Shack</a>
<a href="tel:+1234567890">Call Harold's Chicken Shack</a>

但是,该问题似乎不受连字符或+符号的影响。

接下来,一些人建议为链接设置一个目标:

代码语言:javascript
复制
<a href="tel:123-456-7890">Call Harold's Chicken Shack</a>
<a href="tel:123-456-7890" target="_blank">Call Harold's Chicken Shack</a>

这在我的测试中也没有什么不同。似乎有些人认为,如果正在使用的HTML页面在框架中,这将会起作用。为了清楚起见,我使用的HTML页面是一个单独的页面,而不是在一个框架集内,并且存储在本地的手机上。

一些评论似乎讨论了不同的浏览器。我的目标是股票安卓5.5.1/棒棒糖WebView / HTML浏览器。我可以确认原始代码:

代码语言:javascript
复制
<a href="tel:123-456-7890">Call Harold's Chicken Shack</a>

如果在许多第三方浏览器中打开,将正常工作。然而,我在这里寻求一个股票解决方案。

许多评论似乎表明需要设置特殊权限,但没有任何迹象表明文件在哪里,我根本找不到它们,更不用说修改它们了。这让我想知道,他们的权限相关建议是否甚至是股票/未扎根的Android设备上的一个选项。

所以,总而言之,如果你想在你的安卓手机上有一个本地存储的超文本标记语言页面(不是脚本,不是应用程序,甚至不是运行JavaScript或其他东西的超文本标记语言页面,只有一个简单的本地超文本标记语言页面,它有一个“href=”链接,点击时会把一个电话号码放入拨号器中……)如何做到这一点?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2015-09-25 10:36:37

代码语言:javascript
复制
import android.content.Intent;
import android.net.Uri;

..。

代码语言:javascript
复制
mWebView = (WebView) findViewById(R.id.web_view); 

WebSettings webSettings = mWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 

mWebView.setWebViewClient(new WebViewClient(){
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if( url.startsWith("http:") || url.startsWith("https:") ) {
            return false; 
        } 

        // Otherwise allow the OS to handle things like tel, mailto, etc. 
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity( intent );
        return true; 
    } 
}); 
mWebView.loadUrl(url); 
票数 4
EN

Stack Overflow用户

发布于 2016-01-10 18:49:19

Android Webview对HTML5的支持非常好。

您必须将urls彼此分开。我也有同样的问题,我想知道,为什么这种链接会触发电话。Webview.shouldOverrideUrlLoading方法不会为您完成此操作,因此只需编写一条if-语句来捕获tel:-url即可。

我很容易地用这里的第一个答案解决了这个问题:https://stackoverflow.com/a/4339193/4937108

票数 1
EN

Stack Overflow用户

发布于 2015-09-25 14:15:29

我犯了一个错。我可以使用android 5.1.1在浏览器中打开拨号。也许你可以使用其他浏览器!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32773731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档