永远不会调用JavaScriptInterface类来在webview android上加载html

时间:2012-01-20 11:07:01

标签: javascript android webview

我正在解析xml文件并使用Java脚本接口类和CSS将其加载到Web视图上,但我的Java脚本接口类从未被调用,并且Web视图中没有加载任何内容,应用程序只是崩溃而且没有错误是在log cat上给出。你能帮朋友帮忙解决这个问题。

我的js接口类是

    public class JsInterface {
public String wordDef;

public String addData(){
    Log.v("JSInterface", ""+wordDef);
    return wordDef;
}

我正在调用主要活动,如

                 JsInterface Jsi = new JsInterface();
            Jsi.wordDef = content;
            Log.v("Content",""+content);
            wv.addJavascriptInterface(Jsi, "interfaces");
            wv.loadUrl("file:///android_asset/ccc.html");

我的HTML看起来像

      <html xmlns="http://www.w3.org/1999/xhtml">
         <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=WIDTH_OF_YOUR_PAGE, target-densitydpi=device-dpi"/>
           <title>Untitled Document</title>
         <link href="word_style.css" rel="stylesheet" type="text/css" />
          <script type="text/javascript">
    function addData(){
    //var data = getQuerystring('word');
    var data = window.interfaces.addData();
    document.getElementById('content').innerHTML = data;
}

2 个答案:

答案 0 :(得分:0)

我还没看看你的代码,但是让我告诉你,如果你没有为你的类创建一个构造函数并将引用od上下文传递给构造函数javascript永远不会能够调用java的任何方法< / p>

答案 1 :(得分:0)

试试这个:             JsInterface Jsi = new JsInterface();             Jsi.wordDef = content;             Log.v( “内容”, “” +含量);             wv.addJavascriptInterface(Jsi,“interfaces”);             wv.loadUrl( “文件:///android_asset/ccc.html”);

       public class JsInterface {
       public String wordDef;
       Context mContext;

       public void JsInterface(Context c){
       mContext = c;
       }

       public String addData(){
       Log.v("JSInterface", ""+wordDef);
       return wordDef;
       }

       }

然后从javascript调用

        function addData(){
           var data = interfaces.addData();
       }

它应该有用