Android Webview打开第三方APP(高德地图 淘宝 QQ等等)

现在很多APP不单靠Android原生开发来完成,今天我们就遇到一个情况,app嵌入H5界面也就是我们通常用的Webview来显示。当进行点击操作跳转到对应的APP。比如说点击网页的导航跳转到高德地图进行路线规划,也或者是网页是一个淘宝衣服商品详情,点击客服咨询会跳转到淘宝。
First Blood
在布局添加WebView控件 so easy。
Doble Kill
接着就是在初始化WebView
Triple Kill
设置一些WebView的属性
Quadra kill 就是下面这些在setWebViewClient()方法里面进行处理

        webview.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                browser.goBack();
                try {
                    //处理intent协议
                    if (url.startsWith("intent://")) {
                        Intent intent;
                        try {
                            intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                            intent.addCategory("android.intent.category.BROWSABLE");
                            intent.setComponent(null);
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
                                intent.setSelector(null);
                            }
                            List<ResolveInfo> resolves = getActivity().getPackageManager().queryIntentActivities(intent,0);
                            if(resolves.size()>0){
                                startActivity(intent);
                            }
                            return true;
                        } catch (URISyntaxException e) {
                            e.printStackTrace();
                        }
                    }
                    // 处理自定义scheme协议
                    if (!url.startsWith("http")) {
                        Log.e("yxx","处理自定义scheme-->" + url);
                        try {
                            // 以下固定写法
                            final Intent intent = new Intent(Intent.ACTION_VIEW,
                                    Uri.parse(url));
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                    | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                            startActivity(intent);
                        } catch (Exception e) {
                            // 防止没有安装的情况
                            e.printStackTrace();
                            Toast.makeText(getContext(),"您所打开的第三方App未安装!",Toast.LENGTH_SHORT).show();
                        }
                        return true;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return false;
            }
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
                //handler.cancel(); 默认的处理方式,WebView变成空白页
//            //接受证书
                handler.proceed();
                //handleMessage(Message msg); 其他处理
            }
        });

拿不了五杀了。

猜你喜欢

转载自blog.csdn.net/sqj199567/article/details/88741236