Android,使用JavaScript接口从Webview中提取JavaScript变量

7

我该如何从一个网站中提取下面这个变量并将其传递到我的安卓代码中呢? 我猜应该使用JavaScript接口来实现,但是我该如何获取它呢?

<script type="text/javascript">
    var Ids = "[4161, 104, 121, 202, 1462]";
</script>

我无法将网站上的代码更改为返回该值的方法。

有什么建议吗?

1个回答

13
您可以在 webview.loadurl 调用中使用 javascript: 方案。它会在 webview 页面中执行 JavaScript。从那里,您可以让它调用您的 JavaScript 接口中的函数。
webview.loadUrl("javascript:Android.getIds(Ids);");

Android是用于声明JavaScript接口的命名空间。

//Add the javascript interface to your web view
this.addJavascriptInterface(new CustomJavaScriptInterface(webViewContext), "Android");

注意JavaScriptInterface只能与原始类型一起使用,因此您实际上不能直接传递数组。只需使用javascript方案循环遍历您的数组即可。我看到它实际上不是一个数组,所以您只需要使用:

public class CustomJavaScriptInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    CustomJavaScriptInterface(Context c) {
        mContext = c;
    }
    

    /** retrieve the ids */
    public void getIds(final String myIds) {
        
        //Do somethings with the Ids
    }
    
}

这个程序相关的内容是:this.addJavaScripInterface(...),我需要在哪里调用它? - Abdul Wahab
被调用了。使用webview :) - Abdul Wahab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接