2012-07-31 30 views
0

如果你有一個Android WebView,並且使用addJavascriptInterface向java對象添加一個接口,有沒有辦法讓java處理這個分配?賦值和addJavascriptInterface:在java中攔截的任何方法?

JS:

javaObject.x = 10 

的Java:

?? 

這種事正常工作:

javaObject.setX(10) 

,但我試圖使用有很多現有的JavaScript代碼庫使用任務的電話,理想情況下,我想盡可能少地做出改變。

+0

你能對你的意思是 「被Java處理任務」 是什麼詳細點嗎? 僅僅是想通過類成員賦值而不是JavaScriptInterface對象上的方法調用將值從JavaScript傳遞給java? – 2012-08-07 18:22:32

+0

我認爲你的問題的答案是肯定的,但我想不出一種方法來編輯問題以使其更清楚。 – 2012-08-07 18:31:52

回答

0
final class DemoJavaScriptInterface { 

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

    public int X ; 
} 
+0

這與問題無關。 – 2012-08-07 18:29:43

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

的Javascript,生活在myHtmlFile

<script type="text/javascript"> 

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

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

</script>