前段时间合作单位给了一轮播图广告链接,点击轮播图会跳转到一个网页,网页上有一个跳转到微信公众号的一个按钮。 经验证。IOS的手机可以完美的跳转到微信客户端,到关注微信公众号界面。而安卓却做不到,并且报错。错误如下:
由于之前没有接触过这个,就开始疯狂的查资料,查资料之前,我用uc浏览器,华为浏览器,微米浏览器试了一下,发现也不是所有的浏览器都可以的。不过uc浏览器可以,那么就说明可行。我根据错误信息了解到一般来说跳转到三方应用采用一种:自定义Url并使用 Scheme的方式打开。(想了解的话可以去查) 因为三方应用不可能把自己的报名或者接口暴露出来给你,那样会存在安全隐患。
只要找到了方向就可以了去解决问题了,Android webview中调用网页的js方法的时候会走shouldOverrideUrlLoading的方法,在这个方法中如果你不进行处理,会直接进行加载URL。webView.loadUrl(url); 而这个URL其实就是你调用打开微信公众号的scheme的url。所以需要在shouldOverrideUrlLoading方法中进行一个判断:
@Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { Uri uri = Uri.parse(url); if (uri.getScheme().equals("weixin")) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } else { webView.loadUrl(url); } return super.shouldOverrideUrlLoading(webView, url); }
如果你不值到shouldOverrideUrlLoading方法在哪里 那我真是无语了。。。
在webview的 setWebViewClient()方法中会有几个比较重要的方法:onPageStarted , shouldOverrideUrlLoading
,onPageFinished