![](/img/trans.png)
[英]Android, extract javascript variable from webview using javascript interface
[英]Is there a way to extract objects (class instances) in JavaScript to Android using WebView?
我正在嘗試提取在 JavaScript 中創建的對象和列表,以便在 Android 應用程序中使用它們。 (我已成功提取單個值。)我正在使用 addJavaScriptInterface 方法來實現它。
在 test.html 內部,我有以下腳本代碼:(我嘗試過不使用“.slice()”,但也沒有工作)
function getList(){
var categoryTotals = {};
categoryTotals[0] = 1;
categoryTotals[1] = 2;
categoryTotals[2] = 3;
return categoryTotals.slice();
}
而 WebViewClient 的 onPageFinished 方法包含以下代碼:
mWebView.loadUrl("javascript:window.HTMLOUT.callAndroidList(getList());");
我的 JavaScriptInterface 有以下 function:
public void callAndroidList(final List list){
myList = list;
Log.d("ListTest" , "LIST 1 >>>>>>>>>>>>> " + ListTest.myList.get(0));
Log.d("ListTest" , "LIST 2 >>>>>>>>>>>>> " + ListTest.myList.get(1));
Log.d("ListTest" , "LIST 3 >>>>>>>>>>>>> " + ListTest.myList.get(2));
}
當我運行這段代碼時,我得到 NullPointerException 說 callAndroidList 的參數 list 是 null。 我沒有處理太多 JavaScript 所以我認為這可能與 JavaScript object 實例的創建和刪除有關。
你能幫幫我嗎? 提前致謝。
> function getList(){
> var categoryTotals = {};
這將創建一個 object,我認為您的意思是創建一個數組,所以也許應該是:
var categoryTotals = [];
.
> categoryTotals[0] = 1;
> categoryTotals[1] = 2;
> categoryTotals[2] = 3;
> return categoryTotals.slice();
由於您正在創建具有數字屬性而不是數組的 object,因此它沒有切片方法。 將categoryTotals初始化為數組應該可以解決這個問題。
順便說一句,使用slice來返回數組的副本似乎沒有任何意義。 既然categoryTotals不用於其他任何事情,為什么不直接返回呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.