mwebView = (WebView) findViewById(R.id.webView1);//webview
mWebSettings = mwebView.getSettings(); mwebView.getSettings().setJavaScriptEnabled(true);//重点!!!!!允许javascript运行
mwebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //设置 缓存模式 // 开启 DOM storage API 功能 mwebView.getSettings().setDomStorageEnabled(true); //开启 database storage API 功能 mwebView.getSettings().setDatabaseEnabled(true); //开启 Application Caches 功能 mwebView.getSettings().setAppCacheEnabled(true); mwebView.getSettings().setBlockNetworkImage(false); mwebView.getSettings().setLoadsImagesAutomatically(true); //自动加载图片 mwebView.getSettings().setAllowUniversalAccessFromFileURLs(true);//!!!!!!!允许跨域(默认chromium不允许),sdk最低版本必须在15以上
mwebView.addJavascriptInterface(new StartVideo(), "jsInterface"); //重点!!!声明js调用的android方法(android方法,window下的对象)
//android声明
private final class StartVideo {
@JavascriptInterface在4.2之后是必须要加的 @JavascriptInterface public void showToast(String text){ Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show(); } @JavascriptInterface public void showJsText(String text){ mwebView.loadUrl("javascript:jsText('"+text+"')");//jsText()是js方法 }
android4.2以上,需要用runOnUiThread()
@JavascriptInterface
// public void showJsText(final String text){
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// mwebView.loadUrl("javascript:jsText('"+text+"')");
// }
// });
// }
}
<button onclick="window.jsInterface.showText('调用安卓组件')">btn1</button> <button onclick="window.jsInterface.showToast('java调用js')">btn2</button>
问题:webview中获取不到cookie,需要调用方法同步cookie