0

如果您有一个 Android WebView,并且您使用 addJavascriptInterface 将接口添加到 java 对象,有没有办法让 java 处理分配?

JS:

javaObject.x = 10

爪哇:

??

这种事情很好用:

javaObject.setX(10)

但我正在尝试使用现有的 javascript 代码库,该代码库有很多使用赋值的调用,理想情况下我想对其进行尽可能少的更改。

4

2 回答 2

0

According to the documentation for WebView.addJavascriptInterface(), only the Java object's public methods are able to be accessed from JavaScript. Meaning that you cannot assign a value to a class member variable in the Java object from within Javascript.

http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)

For example :

public class JavaScriptInterface {
   public int x;
   private int y;

   public void setY(int value) {
       y = value;
       Log.d("JavaScriptInterface", "setY = " + y);
   }  
}

...

public void onCreate(Bundle b) {
    super.onCreate(b);
    ... 
    WebView webView = (WebView) findViewById(R.id.webview);
    webView.addJavascriptInterface(new JavaScriptInterface(), "Android");
    webView.loadUrl(myHtmlFile);
}

Javascript that lives in myHtmlFile:

<script type="text/javascript">

    Android.x = 10;  // this will not work

    Android.setY(1000);  // this will work!

</script>
于 2012-08-07T18:21:57.680 回答
0
final class DemoJavaScriptInterface {  

    DemoJavaScriptInterface() {  
        // code here...
    }

    public int  X ;
} 
于 2012-08-07T15:16:58.847 回答