因为android软件开发分工目前还没有细化,程序员往往需要负责软件界面的开发,虽然软件的界面图片已经由美工设计好了,但如果使用layout技术把软件做成如图片所示的界面确实很困难,而且也比较耗时。Android通过WebView实现了JS代码与Java代码互相通信的功能,使得android软件的界面开发也可以采用HTML网页技术,这样,广大网页美工可以参与进android软件的界面开发工作,从而让程序员从中解脱出来。
示例代码如下:
package cn.itcast.web;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class DemoActivity extends Activity {
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) this.findViewById(R.id.webview);
// 相当于创建了一个浏览器
WebSettings settings = webView.getSettings(); // 得到浏览器的设置
settings.setJavaScriptEnabled(true);
// 添加javascript接口
/**
* 网页代码中超链接代码如下对象名demo和方法名callPhone()必须对应一致
* <p>
* <a οnclick="window.demo.callPhone()" href="">callPhone</a>
* </p>
*/
webView.addJavascriptInterface(new Object() {
public void callPhone() {
System.out.println("callphone");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:1351234567"));
startActivity(intent);
}
}, "demo");
String url = getResources().getString(R.string.serverurl);
webView.loadUrl(url);
}
// 调用javascript代码,如下:fillContent()方法名一致即可
// <script>
// function fillContent(){
// document.getElementById("content").innerHTML = "aaaaaaaaaaaaaaaaaa";
// }
// }
// </script>
// <body bgcolor="#FFFFFF">
// <p id="content"></p></body>
public void calljavascript(View view) {
System.out.println("javascript");
webView.loadUrl("javascript:fillContent()");
}
}