android webViewのhtmlページはjavascriptを通じてjavaコードにアクセスします.

1176 ワード

まず次のコードを見ます.
public class WebViewDemo extends Activity {
private WebView mWebView;
private Handler mHandler = new Handler();


public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.webviewdemo);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl(“javascript:wave()”);
}
});
}
}, ”demo”);
mWebView.loadUrl(“file:///android_asset/demo.html”);
}
}
htmlページ:
<html>
<script language=”javascript”>
function wave() {
document.getElementById(“droid”).src=”android_waving.png”;
}
</script>
<body>
<a onClick=”window.demo.clickOnAndroid()”>
<img id=”droid” src=”android_normal.png”/><br>
Click me!
</a>
</body>
</html>
このようにして)のjavascriptはjavaオブジェクトのclickOnAndroidを呼び出すことができます.同じJavaでもhtml中のjsメソッドにアクセスできます.
注意:この方法はandroid 2.3では使用できません.2.3では強制変換異常と似たようなエラーが発生します.webview下の実装を変更する必要があります.