it-roy-ru.com

Получение net :: ERR_UNKNOWN_URL_SCHEME при вызове номера телефона со страницы HTML в Android

Я получаю "net :: ERR_UNKNOWN_URL_SCHEME" при вызове опции телефонного номера со страницы HTML в Android. Нужно ли мне добавлять какие-либо разрешения в манифест, чтобы это работало? Я пока ничего не добавил в манифест. Вот код HTML:

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

12
Karthik

Следующее должно работать и не требовать каких-либо разрешений в манифесте (в основном переопределяет shouldOverrideUrlLoading и обрабатывает ссылки отдельно от tel, mailto и т.д.):

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

Также обратите внимание, что в приведенном выше фрагменте кода я включаю JavaScript, который вам, скорее всего, также понадобится, но если по какой-то причине вы этого не сделаете, просто удалите эти две строки.

27
David M

Эта проблема возникла со ссылками mailto: и tel: внутри iframe (в Chrome, а не в веб-просмотре). При щелчке по ссылкам отобразится серая страница «страница не найдена», а при просмотре страницы обнаружена ошибка ERR_UNKNOWN_URL_SCHEME.

Добавление target="_blank", как предложено это обсуждение проблемы устранило проблему для меня.

2
Sly_cardinal

Попробуйте так, надеюсь, это поможет вам решить вашу проблему.

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

}

Пожалуйста, добавьте это разрешение в AndroidManifest.xml

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