WhatsApp 自定义 url 方案在 Webview 中不起作用

WhatsApp custom url scheme not working in a Webview

我正在 android 中进行 webview,其中我正在调用一个网站 link 在该网站中我正在调用 web.whatsapp.com link。现在这个 link 在桌面和移动视图中都运行良好,而同样 link 如果我在 webview 中打开然后显示错误,即 网页不可用 更清楚让我们看看错误图像

这里是webview的代码android

public class MainActivity extends AppCompatActivity {
    WebView webView;
    ProgressBar bar;

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

        webView = (WebView) findViewById(R.id.webView2);
        bar =(ProgressBar) findViewById(R.id.progressBar2);
        webView.setWebViewClient(new myWebClient());
        webView.loadUrl("http://.../");
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new myWebClient());
    }

    public class myWebClient extends WebViewClient{

        @Override
        public void onPageFinished(WebView view, String url) {
            bar.setVisibility(View.GONE);
            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            bar.setVisibility(View.VISIBLE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            bar.setVisibility(View.GONE);
            return super.shouldOverrideUrlLoading(view, url);
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
            webView.goBack();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }
}

尝试在您的 Web 客户端中 override shouldOverrideUrlLoading 并使用下面给出的代码。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    boolean overrideUrlLoading = false;

    if (url != null && url.startsWith("whatsapp://")) {

        view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

        overrideUrlLoading = true;

    } else {

        view.loadUrl(url);
    }

    return overrideUrlLoading;
}