Getting net:: ERR Unknown URL SCHEME while calling telephone number from HTML page in Android

Estou a receber "net: ERR_UNKNOWN_URL_SCHEME" ao ligar para uma opção de número de telefone de uma página HTML no Android. Preciso de adicionar alguma permissão no manifesto para que isto funcione? Não acrescentei nada no manifesto até agora. Aqui está o código HTML:

<a href="tel:+1800229933">Call us free!</a>

Author: not_a_bot, 2014-07-11

3 answers

O seguinte deve funcionar e não exigir quaisquer permissões no manifesto (basicamente sobrepor o 'shouldurlloading' e lidar com ligações separadamente de tel, mailto, etc.):

    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);

Também, note que no excerto acima eu estou ativando JavaScript, que você também irá querer, mas se por alguma razão você não quiser, basta remover essas 2 linhas.

 24
Author: David M, 2014-08-28 19:06:17

Tive este problema a ocorrer com as ligações {[[0]} e tel: dentro de uma iframe (no Chrome, não numa webview). Clicando nos links mostrava a página cinza "não encontrada" e inspecionando a página mostrou que tinha um erro ERR_UNKNOWN_URL_SCHEME.

Adicionando target="_blank", como sugerido por esta discussão da questão resolveu o problema para mim.

 2
Author: Sly_cardinal, 2015-05-19 05:32:06

Tente assim, espero que isto o ajude a resolver o seu problema.

Main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

A minha actividade.java

public class MyActivity extends Activity {

    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webView = (WebView) findViewById(R.id.webView);
        webView.loadData("<a href=\"tel:+1800229933\">Call us free!</a>", "text/html", "utf-8");
    }

}

Por favor, adicione esta permissão ao AndroidManifest.xml

<uses-permission android:name="android.permission.CALL_PHONE"/>
 0
Author: Haresh Chhelana, 2014-07-11 13:19:41