web-dev-qa-db-fra.com

Getting net :: ERR_UNKNOWN_URL_SCHEME lors de l'appel du numéro de téléphone depuis la page HTML sous Android

Je reçois "net :: ERR_UNKNOWN_URL_SCHEME" tout en appelant une option de numéro de téléphone à partir d'une page HTML sous Android. Dois-je ajouter une ou plusieurs autorisations dans le manifeste pour que cela fonctionne? Je n'ai rien ajouté dans le manifeste jusqu'à présent. Voici le code HTML:

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

12
Karthik

Ce qui suit devrait fonctionner et ne nécessiter aucune autorisation dans le manifeste (essentiellement, remplacez devraitOverrideUrlLoading et gérez les liens séparément 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);

Notez également que, dans l'extrait ci-dessus, j'active JavaScript, ce que vous voudrez probablement aussi, mais si, pour une raison quelconque, vous ne le faites pas, supprimez simplement ces 2 lignes.

27
David M

Ce problème se produisait avec les liens mailto: et tel: dans une iframe (dans Chrome, pas une vue Web). En cliquant sur les liens, la page grise "page introuvable" apparaît; l'inspection de la page a révélé une erreur ERR_UNKNOWN_URL_SCHEME.

Ajouter target="_blank", comme suggéré par cette discussion sur le problème a corrigé le problème pour moi.

2
Sly_cardinal

Essayez de cette façon, espérons que cela vous aidera à résoudre votre problème.

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>

MyActivity.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");
    }

}

Ajoutez cette permission dans AndroidManifest.xml

<uses-permission Android:name="Android.permission.CALL_PHONE"/>
0
Haresh Chhelana