0

Android WebView があり、addJavascriptInterface を使用して Java オブジェクトにインターフェイスを追加する場合、Java で割り当てを処理する方法はありますか?

JS:

javaObject.x = 10

ジャワ:

??

この種のことはうまくいきます:

javaObject.setX(10)

しかし、割り当てを使用して多くの呼び出しを行う既存の JavaScript コードベースを使用しようとしています。理想的には、変更をできるだけ少なくしたいと考えています。

4

2 に答える 2

0

WebView.addJavascriptInterface()のドキュメントによると、Java オブジェクトのパブリック メソッドのみが JavaScript からアクセスできます。つまり、Javascript 内から Java オブジェクトのクラス メンバー変数に値を割り当てることはできません。

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

例えば ​​:

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);
}

myHtmlFileにある Javascript :

<script type="text/javascript">

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

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

</script>
于 2012-08-07T18:21:57.680 に答える