I have an Activity with a webview and a javascript interface on the java side.I would like to write a method in Java that can accept a json paramater from the webview.
@JavascriptInterface
public String test(Object data) {
Log.d("TEST", "data = " + data);
}
on my webview javascript I call:
MyAPI.test({ a: 1, b: 2 });
but the data variable is null.
How can I pass JSON objects from webview javascript into native method?
Thanks
I have an Activity with a webview and a javascript interface on the java side.I would like to write a method in Java that can accept a json paramater from the webview.
@JavascriptInterface
public String test(Object data) {
Log.d("TEST", "data = " + data);
}
on my webview javascript I call:
MyAPI.test({ a: 1, b: 2 });
but the data variable is null.
How can I pass JSON objects from webview javascript into native method?
Thanks
Share Improve this question asked Feb 25, 2014 at 21:58 developer82developer82 13.7k24 gold badges93 silver badges163 bronze badges 1- 3 You can only pass Strings and primitives. – njzk2 Commented Feb 25, 2014 at 22:01
2 Answers
Reset to default 3You can use GSON library or similar to create Stringified JSON to Java object, and JSON.stringify(data)
on JS side
@njzk2 is right, do it like this:
In JAVA:
@JavascriptInterface
public String test(String data) {
Log.d("TEST", "data = " + data);
return "this is just a test";
}
In JS:
// some code
var result = test("{ a: 1, b: 2 }");
alert(result);
//some code
function test(args) {
if (typeof Android != "undefined"){ // check the bridge
if (Android.test!= "undefined") { // check the method
Android.test(args);
}
}
}