[英]How to return a JSONArray from JavascriptInterface
我試圖使用Javascript捕獲HTML的表單數據,並將它們作為JSONArray返回給Java,但是似乎JSONArray在JavascriptInterface中沒有正確返回給Java。
Javascript可以在Chrome中完美運行,因此問題應該出在Java端或界面上。
mWebView.loadUrl("javascript: FeArray=document.getElementsByTagName('input')");
mWebView.loadUrl("javascript: JSJSONArray = []");
mWebView.loadUrl("javascript: for(i=0;i<FeArray.length;i++) { fe=FeArray[i]; JSJSONArray.push({'id':fe.id,'type':fe.type,'checked':fe.checked,'value':fe.value});}");
mWebView.loadUrl("javascript: JSBridge.transferFromJS2Java(JSJSONArray)");
transferFromJS2Java是一個@JavascriptInterface函數,實現如下:
public class JSBridge{
@JavascriptInterface
public void transferFromJS2Java(String data) {
mJSONArray = new JSONArray(data);
}
}
這里的mJSONArray是一個全局變量。
我認為可能無法以這種方式復制JSONArray。 有什么更好的方法可以將JSJSONArray從Javascript復制到Java?
因此,解決方案就像我在討論中提到的那樣,用Javascript對JSONArray進行字符串化:
mWebView.loadUrl("javascript: var JSString = JSON.stringify(JSJSONArray);");
mWebView.loadUrl("javascript: JSBridge.transferFormData(JSString)");
然后在Java方面,使用問題中的第二個代碼段將String轉換回JSONArray。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.