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

卡兰

我在android中做webview,在其中我正在调用该网站中的网站链接,在我正在调用web.whatsapp.com链接。现在,此链接在桌面以及移动视图中都可以正常工作,而如果我在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);
    }
}
Amninder Singh |

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

@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;
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章