Android WebView err_unknown_url_scheme

新手上路,请多包涵

使用下面的简单代码,我可以正确加载我的 url,但是,当我尝试点击以 mailto: whatsapp:tg: (Telegram) 开头的 html 链接时,我得到“ERR_UNKNOWN_URL_SCHEME”。

任何人都可以帮我解决这个问题吗?不幸的是我根本不懂 Java :(

谢谢。

     import android.app.Activity;
    import android.os.Bundle;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;

    public class MainActivity extends Activity {

        private WebView mWebView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mWebView = (WebView) findViewById(R.id.activity_main_webview);

            // Force links and redirects to open in the WebView instead of in a browser
            mWebView.setWebViewClient(new WebViewClient());

            // Enable Javascript
            WebSettings webSettings = mWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);

            // Use remote resource
            mWebView.loadUrl("http://myexample.com");
        }
    }

原文由 NGC7803 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

你必须在 webview 中设置一个客户端并将它们传递给一个意图

webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if( URLUtil.isNetworkUrl(url) ) {
                return false;
            }
            if (appInstalledOrNot(url)) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity( intent );
            } else {
                // do something if app is not installed
            }
            return true;
        }

    });
}

您可以有一种方法来检查是否安装了应用程序

private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }

        return false;
    }

原文由 Cristian Gomez 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题