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

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

更多相关文章

  1. android aidl浅析
  2. Android开机自启动服务的实现方法
  3. Android(安卓)-- Environment类
  4. Android(安卓)如何更改包名
  5. android 入门学习笔记 取得文件架构、打开文件、判断文件MimeTyp
  6. Android入门级之WebView的使用
  7. Android(安卓)系统自动实现开机启动
  8. Android(安卓)Studio系列教程三--快捷键
  9. Android(安卓)startActivityForResult 和 setResult的使用

随机推荐

  1. Android(安卓)Handler 教程
  2. Android(安卓)9.0——ActivityManagerSer
  3. make_ext4fs 文件权限控制
  4. AppWidget运用实例
  5. Android(安卓)Intent 机制学习
  6. Android(安卓)Lollipop 设置状态栏颜色
  7. Android7.1 Presentation双屏异显 DEMO
  8. android studio使用database navigator查
  9. Anroid的onCreateOptionsMenu()创建菜单M
  10. android中Baseadapter的 getItem 和 getI