要使用Google服务,在建项目时就要选择Google API作为基础库,现有的版本为1.5和1.6,按常理是选用1.5,经过我的测试,用1.5写出的程序,在1.1和1.6下都能正常运行,但是用1.6写出的程序,在1.1下兼容性并不那么好。下面就来看一下assets下的页面代码:<html><head><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><script type="text/javascript" src="http://www.google.com/jsapi"></script><script type="text/javascript">google.load("language", "1");function google_translate(strInput,targetDIV) {try {google.language.translate(strInput, "", "zh-CN", function(result) {if (!result.error) {window.demo.runOnAndroidJavaScript(result.translation);}else {google.language.translate(strInput, "en", "zh-CN", function(result) {if (!result.error) {window.demo.runOnAndroidJavaScript(result.translation);}else {window.demo.runOnAndroidJavaScript(result.translation);}});}});} catch(e) {alert("google_translate Error:"+e);}}function translate(strTranslate) {google_translate(strTranslate, "showDiv");}</script><body><div id="showDiv"></div></body></html>主要就是加载Google API的一个js文件,然后调用其中的翻译方法。其中demo.runOnAndroidJavaScript()是写在后台代码中的一个回调,相当于对window对象作了一个external处理,这样可以让js调回到后台的代码。后台的代码如下:public class OnlineTranslate extends Activity implements OnClickListener {private EditText edt;private TextView tv;private Button btnGo;private WebView wv;private Handler h = new Handler();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);edt = (EditText) findViewById(R.id.edt);btnGo = (Button)findViewById(R.id.btnGO);wv = (WebView) findViewById(R.id.wv);btnGo.setOnClickListener(this);tv = (TextView)findViewById(R.id.tv);wv.setVisibility(View.INVISIBLE);WebSettings webSettings = wv.getSettings();webSettings.setJavaScriptEnabled(true);webSettings.setSaveFormData(false);webSettings.setSavePassword(false);webSettings.setSupportZoom(false);wv.addJavascriptInterface(new runJavaScript(), "demo");String url = "file:///android_asset/google_translate.html";wv.loadUrl(url);}final class runJavaScript {public void runOnAndroidJavaScript(final String txt) {h.post(new Runnable() {public void run() {tv.setText(txt.toString());}});}}@Overridepublic void onClick(View v) {if (edt.getText().toString() != "") {wv.loadUrl("javascript:translate('" + edt.getText().toString() + "')");}}}上面的代码中,wv.addJavascriptInterface(new runJavaScript(), "demo");这一句就是注册external了,当然你需要在界面上放一个WebView,用来接收这一页面最后就是配置权限了,程序需要访问网络,必须给它这一许可<uses-permission android:name="android.permission.INTERNET"></uses-permission>