android WebView打開本地APP報錯net::ERR_UNKNOWN_URL_SCHEME

網上有人說去掉webView.setWebViewClient方法保留webView.setWebChromeClient(new WebChromeClient())就可以,但是又會出現一個問題,當該APP不存在時,又會報出該錯誤。

解決辦法是重寫webView.setWebViewClient的shouldOverrideUrlLoading方法:

            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                if (request.getUrl().toString().startsWith("http:") || request.getUrl().toString().startsWith("https:")) {
                    return false;
                }
                try {
                    Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
                    startActivity(intent);
                } catch (Exception e) {
                    Log.e(TAG, "ERROR1 : " + e.toString());
                }
                return true;
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.startsWith("http:") || url.startsWith("https:")) {
                    return false;
                }
                try {
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                } catch (Exception e) {
                    Log.e(TAG, "ERROR2 : " + e.toString());
                }
                return true;
            }
        });

這樣就可以了,因爲如果不處理,webview默認走的是http或https協議通道。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章