Assets dir にある html ファイルで、アクティビティから javascript メソッドに配列を渡そうとしています。
JSONArray のような int 配列を渡す JavascriptInterface を使用しています。
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 でプロジェクトをテストしています。
このコードは、Samsung Note 2 (JB 4.2.1) およびターゲットの Google API (API レベル 8) を使用する AVD で正常に動作しますが、Asus Nexus 7 (JB 4.2.2) およびその他の JB 4.2 を使用する AVD では、コードの動作が停止し、Web が返されます。コンソール エラー:
03-25 16:35:12.809: E/Web コンソール (11352): Uncaught SyntaxError: Unexpected token o at 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
誰かがそれを解決する考えを持っていますか?
どんな助けでも大歓迎です!