Java 如何将JSON格式的数据从WebView传递到HTML页面
我试图将JSON格式的数据从Android WebView传递到HTML页面。但是,每当我试图解析原始JSON数据时,应用程序就会崩溃,我希望原始JSON数据的格式是Java 如何将JSON格式的数据从WebView传递到HTML页面,java,javascript,android,json,webview,Java,Javascript,Android,Json,Webview,我试图将JSON格式的数据从Android WebView传递到HTML页面。但是,每当我试图解析原始JSON数据时,应用程序就会崩溃,我希望原始JSON数据的格式是{“key”:“data”} 我的应用程序的目的是解释这个JSON数据,将其形成一个值数组,并将其发送到HTML页面。这是正确的方法吗 这是我的WebView代码 public class MyWebView extends Activity { WebView mWebView; public void onCr
{“key”:“data”}
我的应用程序的目的是解释这个JSON数据,将其形成一个值数组,并将其发送到HTML页面。这是正确的方法吗
这是我的WebView代码
public class MyWebView extends Activity {
WebView mWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
mWebView = (WebView) findViewById(R.id.webviewSch);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(this, "webConnector");
mWebView.loadUrl("file:///android_asset/table.html");
}
public String load() {
return "{\"key\":\"data\"}";
}
}
这是HTML代码
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function loader() {
var jsonData = window.webConnector.load();
}
</script>
</head>
<body onload="loader()">
Do nothing
</body>
</html>
我复制粘贴了你的代码,它工作了(没有显示任何内容,因为你没有显示数据),但是从Javascript到Android的回调被正确执行。您可以使用以下代码进行检查:
WebView mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(this, "webConnector");
mWebView.addJavascriptInterface(this, "toaster");
mWebView.loadUrl("file:///android_asset/table.html");
}
public String load() {
Log.e("HelloJavascript","HelloJavascript");
return "{\"key\":\"data\"}";
}
public void print(String message){
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
还有HTML
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function loader() {
var jsonData = window.webConnector.load();
toaster.print(jsonData);
}
</script>
</head>
<body onload="loader()">
Do nothing
</body>
</html>
试验
函数加载器(){
var jsonData=window.webConnector.load();
烤面包机。打印(jsonData);
}
无所事事
从日志中发布堆栈跟踪。我将emulator更改为4.0.3,现在对我有效。感谢您的回复。我试过你的代码,但还是很难用。然而,在我将emulator更改为4.0.3之后,它工作了!我不知道你以前使用的是什么,但我认为JavaScript界面在2.3“Uncaught TypeError:window.webConnector.load不是函数”中有一个bug,来源:myaddress“你知道为什么吗?@NaeimFard你有解决错误的方法吗?@ParthPatel真的是一个老错误。不记得了
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function loader() {
var jsonData = window.webConnector.load();
toaster.print(jsonData);
}
</script>
</head>
<body onload="loader()">
Do nothing
</body>
</html>