我是靠谱客的博主 生动哑铃,最近开发中收集的这篇文章主要介绍Android原生webview打开支付宝,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近解决一个问题,后台返回客户单的是一个支付宝的链接,需要客户端这边来打开,返回地址为:

https://openapi.alipay.com/gateway.do?app_id=***

使用webview加载后会重定向到

https://mclient.alipay.com/cashier/mobilepay.htm?alipay_exterface_invoke_assign_target=

再然后会打开支付宝自定义的scheme

alipays://platformapi/startApp?appId=

这里就需要在shouldOverrideUrlLoading里面添加如下代码:

            if (url.startsWith("http")) {
                return super.shouldOverrideUrlLoading(view, url);
            } else {
                try {
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(url));
                    startActivity(intent);
                    finish();
                    return true;
                } catch (Exception e) {//防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
                    return true;//没有安装该app时,返回true,表示拦截自定义链接,但不跳转,避免弹出上面的错误页面
                }

            }

webview的setting设置如下

    private void setting(WebView dWebView) {
        dWebView.setWebViewClient(client);
        dWebView.setWebChromeClient(new WebChromeClient());
        WebSettings webSetting = dWebView.getSettings();
        webSetting.setJavaScriptEnabled(true);
        webSetting.setJavaScriptCanOpenWindowsAutomatically(true);//这句很重要
        webSetting.setAllowFileAccess(true);
        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSetting.setSupportZoom(true);
        webSetting.setBuiltInZoomControls(true);
        webSetting.setDisplayZoomControls(false);
        webSetting.setUseWideViewPort(true);
        webSetting.setSupportMultipleWindows(true);
        webSetting.setLoadWithOverviewMode(true);
        webSetting.setAppCacheEnabled(true);
        webSetting.setDatabaseEnabled(true);
        webSetting.setDomStorageEnabled(true);
        webSetting.setGeolocationEnabled(true);
        webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
        webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSetting.setCacheMode(WebSettings.LOAD_DEFAULT);
        //下面两行代码可以防止webview页打开黑屏
        dWebView.setBackgroundColor(App.getInstance().getColor(android.R.color.transparent));
        dWebView.setBackgroundResource(R.color.white);


    }

如果要用WebView打开微信支付,会出现重定向问题,可以参考这里的解决方案

最后

以上就是生动哑铃为你收集整理的Android原生webview打开支付宝的全部内容,希望文章能够帮你解决Android原生webview打开支付宝所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部