注意:需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
public class MainActivity extends Activity {
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
//设置WebView属性,能够执行Javascript脚本
webview.getSettings().setJavaScriptEnabled(true);
//设置可以自动加载图片
webview.getSettings().setLoadsImagesAutomatically(true);
//加载需要显示的网页
webview.loadUrl("http://www.51cto.com/");
//设置Web视图
webview.setWebViewClient(new HelloWebViewClient ());
}
@Override
//用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调 用finish()而结束自身,而不是回退到上一页面
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack(); //goBack()表示返回WebView的上一页面
return true;
}
return false;
}
// 为了让WebView能够响应超链接功能(不使用系统默认的浏览器),调用setWebViewClient( )方法
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
//1 ,接收到 Http 请求的事件
//onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)
//2,打开链接前的事件
//public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }
//这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。
//3,载入页面完成的事件
//public void onPageFinished(WebView view, String url){ }
//同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。
//4,载入页面开始的事件
//public void onPageStarted(WebView view, String url, Bitmap favicon) { }
}
}