Adnroid WebView

Android webView 注意问题

//解决图片不显示

webView.getSettings().setBlockNetworkImage(false);

//启用地理定位

webSettings.setGeolocationEnabled(true);

//启用数据库

webSettings.setDatabaseEnabled(true);

// 启用地理定位

String dir =this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();

// 设置定位的数据库路径

webSettings.setGeolocationDatabasePath(dir);

----------------------------------------------------------------------

webView.setWebChromeClient(new WebChromeClient() {

@Override

                public boolean onJsAlert(WebView view, String url, String message,

                                        JsResult result) {

Log.e(TAG, "onJsAlert: "+ message );

return true;

                }

@Override

                public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {

super.onReceivedTouchIconUrl(view, url, precomposed);

                    Log.e(TAG +"TouchIconUrl", url);

                }

@Override

                public void onProgressChanged(WebView view, int newProgress) {

if (newProgress ==100) {

//                        //100 表示成功

                        progressBar.setVisibility(View.GONE);

                    }else {

progressBar.setProgress(newProgress);

                    }

super.onProgressChanged(view, newProgress);

                }

@Override

                public void onGeolocationPermissionsShowPrompt(String s, GeolocationPermissionsCallback geolocationPermissionsCallback) {

geolocationPermissionsCallback.invoke(s,true,false);

                    super.onGeolocationPermissionsShowPrompt(s, geolocationPermissionsCallback);

                }

});

            webView.loadUrl(PATH);

            //点击链接继续在当前browser中响应

            webView.setWebViewClient(new WebViewClient() {

@Override

                public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

                    iv_back.setVisibility(View.VISIBLE);

                    Log.i(TAG, "onPageStarted: 链接------->" + url);

//                    if (PATH != null && url != null && url.equals(PATH)) {

//                        iv_back.setVisibility(View.GONE);

//                    } else {

//

//                    }

                }

@Override

                public boolean shouldOverrideUrlLoading(WebView view, String url) {

Log.e(TAG, "shouldOverrideUrlLoading:" + url);

                    progressBar.setVisibility(View.VISIBLE);

                    view.loadUrl(url);

return true;

                }

---------------------------------------------------------------------

shouldOverrideUrlLoading:这个方法的返回值

return true表示当前url即使是重定向url也不会再执行(除了在return true之前使用webview.loadUrl(url)除外,因为这个会重新加载)

return false表示由系统执行url,直到不再执行此方法,即加载完重定向的ur(即具体的url,不再有重定向)

webView 微信 拉起支付问题

首先在public boolean shouldOverrideUrlLoading(WebView webView, String s) {

if (s.startsWith("https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?")) {

isPlayFlag =true;

}

// 如下方案可在非微信内部WebView的H5页面中调出微信支付

if (s.startsWith("weixin://wap/pay?") &&isPlayFlag) {

if(isWxInstall(mContext)){

isPlayFlag =false;

        Intent intent =new Intent();

        intent.setAction(Intent.ACTION_VIEW);

        intent.setData(Uri.parse(s));

        mContext.startActivity(intent);

return true;

    }else {

Toast.makeText(mContext, "您未安装微信~ 请安装微信并支付,祝您生活愉快", Toast.LENGTH_SHORT).show();

        webView.goBack();

    }

}

}

WebView 不支持H5的原生弹窗,注意与他们交流

你可能感兴趣的:(Adnroid WebView)