Android webview中 通过Scheme方式唤起Activity或App

前段时间合作单位给了一轮播图广告链接,点击轮播图会跳转到一个网页,网页上有一个跳转到微信公众号的一个按钮。 经验证。IOS的手机可以完美的跳转到微信客户端,到关注微信公众号界面。而安卓却做不到,并且报错。错误如下:

Android webview中 通过Scheme方式唤起Activity或App_第1张图片


由于之前没有接触过这个,就开始疯狂的查资料,查资料之前,我用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


你可能感兴趣的:(文章)