簡體   English   中英

如何從JavascriptInterface返回JSONArray

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM