我使用界面跟随webview:
public void setWebview() {
try {
mWebView = (WebView) findViewById(R.id.intro_browser);
// Set Chrome instead of the standard WebView
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowFileAccessFromFileURLs(true);
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
mWebView.clearCache(true);
mWebView.clearHistory();
mWebView.getSettings().setAllowContentAccess(true);
mWebView.getSettings().setBlockNetworkImage(false);
mWebView.addJavascriptInterface(new WebViewInterface(), interfaceName);
mWebView.loadUrl("file:///android_asset/www/my_access.html");
mWebView.loadUrl("javascript:toBeCalledFromAndroid()");
} catch (Exception e) {
Log.d("TEST", e.getMessage());
}
}
我可以通过JS调用Java本机代码,但我需要通过Java代码调用JS函数将一些数据传递到webview。
所以我试着添加:
mWebView.loadUrl("javascript:toBeCalledFromAndroid()");
加载静态页面内容后。
但它不起作用:
HTML
<head>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0">
<link rel="stylesheet" href="css/bootstrap-combined.min.css">
<link rel="stylesheet" href="css/styles.css">
<script src="libs/jquery-1.9.1.min.js"></script>
<script src="libs/jquery-migrate-1.2.1.min.js"></script>
<script src="libs/jquery.dataTables.min.js"></script>
<script src="libs/FixedColumns.js"></script>
<script src="libs/angular.min.js"></script>
<script src="js/app.js"></script>
<script src="js/init.js"></script>
</head>
</html>
app.js
function toBeCalledFromAndroid() {
alert("TEST");
}
如何更新我的代码以将数据从Java传递到JS?
非常感谢您的任何建议。
答案 0 :(得分:0)
解决方案如下:
我过早地调用了第二个loadUrl()
方式,loadUrl()
是异步的。所以我需要等到页面加载。
webView.loadUrl("javascript: toBeCalledFromAndroid('test')");
方法中的致电OnPageFinished
解决了我的问题。