将值从activity传递到Android webview for Javascript方法
我试图将一个数组从我的活动传递到位于Assets dir中的html文件中的javascript方法 我使用JavascriptInterface传递我的int数组,比如JSONArray:将值从activity传递到Android webview for Javascript方法,javascript,json,android-webview,parameter-passing,Javascript,Json,Android Webview,Parameter Passing,我试图将一个数组从我的活动传递到位于Assets dir中的html文件中的javascript方法 我使用JavascriptInterface传递我的int数组,比如JSONArray: public class JavaScriptInterface { Context mContext; JavaScriptInterface(Context c) { mContext = c; }
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public JSONArray getValues() {
String values = "[100,133,'',120,122,132,133]";
JSONArray jsonarr = null;
try {
jsonarr = new JSONArray(values);
}
catch(JSONException e) {
e.printStackTrace();
}
return jsonarr;
}
}
在javascript方法中,我采用如下值:
var data = JSON.parse(js.getValues());
现在,我正在不同的设备和AVD上测试我的项目:
该代码在三星Note 2(JB 4.2.1)和带有目标Google API的AVD(API级别8)上运行良好,而在华硕Nexus 7(JB 4.2.2)和其他带有JB 4.2的AVD上,该代码停止工作并返回Web控制台错误:
03-25 16:35:12.809:E/Web控制台(11352):未捕获的语法错误:
意外标记o位于file:///android_asset/data/test.html:1
我需要这些值来表示使用Javascript库的图表
此外,我还修改了proguard-project.txt文件,拒绝javascript代码混淆:
keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
-keep public class com.XXX.XXX.DataReportActivity$JavaScriptInterface
-keep public class * implements com.XXX.XXX.DataReportActivity$JavaScriptInterface
-keep classmembers class com.XXX.XXX.DataReportActivity$JavaScriptInterface {
<fields>;
<methods>;
}
-keepattributes JavascriptInterface
keepclassmembers类fqcn.of.javascript.interface.for.webview{
公众*;
}
-保持公共类com.XXX.XXX.DataReportActivity$JavaScriptInterface
-keep public类*实现com.XXX.XXX.DataReportActivity$JavaScriptInterface
-保持classmembers类com.XXX.XXX.DataReportActivity$JavaScriptInterface{
;
;
}
-keepattributes JavascriptInterface
有人知道怎么解决吗
请,欢迎任何帮助 更改Javascript接口以返回字符串。JSON.parse应为字符串,而不是JSON对象
@JavascriptInterface
public String getValues() {
String values = "[100,133,'',120,122,132,133]";
return values;
}
值字符串可能需要加引号,javascript函数才能对其进行解析。换言之:
return "'" + values + "'";