从 Javascript 到 Java(Android) 的通信
Android 活动
package com.example.myapp;
import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;
public class WebViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
/*
* Note the label Android, this is used in the Javascript side of things
* You can of course change this.
*/
webView.addJavascriptInterface(new JavascriptHandler(), "Android");
webView.loadUrl("http://example.com");
}
}
Java Javascript 处理程序
import android.webkit.JavascriptInterface;
public class JavascriptHandler {
/**
* Key point here is the annotation @JavascriptInterface
*
*/
@JavascriptInterface
public void jsCallback() {
// Do something
}
@JavascriptInterface
public void jsCallbackTwo(String dummyData) {
// Do something
}
}
网页,Javascript 调用
<script>
...
Android.jsCallback();
...
Android.jsCallback('hello test');
...
</script>
额外提示
传递复杂的数据结构,可能的解决方案是使用 JSON。
Android.jsCallback('{ "fake-var" : "fake-value", "fake-array" : [0,1,2] }');
在 Android 端使用你最喜欢的 JSON 解析器,即:JSONObject