1. 首先设置webview,需要设置启用javascript:
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
属性备忘:
<pre name="code" class="java">//支持多种分辨率,需要js网页支持
webSettings.setUserAgentString("mac os");
//设置文字默认编码
webSettings.setDefaultTextEncodingName("utf-8");
webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放
设置不用外部浏览器打开,默认设置第一次在webview中打开,后续会打开默认浏览器:
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
/**
* https请求处理,注意手动导入 import android.webkit.SslErrorHandler
* 和 import android.net.http.SslError;
*/
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
//handler.cancel(); 默认的处理方式,WebView变成空白页
handler.proceed(); //接受证书
//handleMessage(Message msg); 其他处理
}
});
2. html调用android 原生:
webView.addJavascriptInterface(new MyJavaScriptInterface(WebViewActivity.this),"JavaScriptInterface");
class MyJavaScriptInterface{
Context mContxt;
public MyJavaScriptInterface(Context mContxt) {
this.mContxt = mContxt;
}
/**
* 设置是否成功!
* @param flag
*/
@JavascriptInterface //sdk17版本以上加上注解
public void setResult(boolean flag){
if(flag ){
CustomerToast.showToast(mContxt, "成功!");
}else{
CustomerToast.showToast(mContxt, "失败!");
}
}
}
需要注意的是:
@JavascriptInterface标签, 在android 4.2之后新增的,添加该标签可以兼容android4.2以上点版本
3. 原生调用js:
webView.loadUrl("javascript:jsname('参数')");
更详细说明博客地址: